启动气流网络服务器时如何解决“错误:没有名为'airflow.www'的模块”
Posted
技术标签:
【中文标题】启动气流网络服务器时如何解决“错误:没有名为\'airflow.www\'的模块”【英文标题】:how to resolve "Error: No module named 'airflow.www'" while starting airflow websever启动气流网络服务器时如何解决“错误:没有名为'airflow.www'的模块” 【发布时间】:2019-05-04 03:35:36 【问题描述】:启动 Airflow 网络服务器时出现以下错误
balajee@Balajees-MacBook-Air.local:~$ 气流网络服务器 -p 8080 [2018-12-03 00:29:37,066] init.py:51 INFO - 使用执行器 SequentialExecutor
[2018-12-03 00:29:38,776] models.py:271 INFO - 从 /Users/balajee/airflow/dags 填充 DagBag 运行 Gunicorn 服务器: 工人:4同步 主机:0.0.0.0:8080 超时:120
日志文件:- -
错误:没有名为“airflow.www”的模块
【问题讨论】:
欢迎来到 ***。如果您想提高获得答案的机会,请访问我们的帮助页面:How do I ask a good question? 【参考方案1】:为我修复
pip3 uninstall -y gunicorn
pip3 install gunicorn==19.4.0
【讨论】:
【参考方案2】:今天早上我遇到了这个问题,我找到了一个奇怪的解决方案,希望对你有帮助。我想也许您只是需要更改命令运行目录。
我在我的virtualenv
目录venv
中安装airflow
基本依赖项,并使用PyCharm 帮助,我使用PyCharm 内置Terminal
选项卡直接访问我的venv
,我使用airflow initdb
来初始化sqlite 数据库以存储我所有的日志和操作,然后根据官方教程我使用airflow webserver
启动网络服务器。但不知何故,今天我使用我的 Mac 终端,并启动 virtulenv,并启动气流网络服务器,我遇到了这个问题:
Running the Gunicorn Server with:
Workers: 4 sync
Host: 0.0.0.0:8080
Timeout: 120
Logfiles: - -
=================================================================
Error: No module named 'airflow.www'
[2019-05-26 07:45:27,130] cli.py:833 ERROR - No response from gunicorn master within 120 seconds
[2019-05-26 07:45:27,130] cli.py:834 ERROR - Shutting down webserver
我通过重新安装gunicorn
尝试了@Evgeniy Sobolev 的解决方案,但没有任何改变,但是当我仍在使用我的 PyCharm 终端时,它仍然可以成功运行。我想可能是因为 first directory
您初始化数据库并运行网络服务器至关重要。默认情况下,当我使用 PyCharm 终端初始化数据库并启动网络服务器时,Project root directory
,如:
(venv) root@root:~/GitHub/FakeProject$ airflow webserver
但是今天我签入venv
启动virtualenv,根目录改变了!
root@root:~/GitHub/FakeProject/SubDir$ source venv/bin/activate
(venv) root@root:~/GitHub/FakeProject/SubDir$ airflow webserver
** Error **
所以这样就遇到Error: No module named 'airflow.www'
,于是我查看了目录,webserver就和PyCharm Terminal一样运行成功了:
(venv) root@root:~/GitHub/FakeProject/SubDir$ cd ..
(venv) root@root:~/GitHub/FakeProject$ airflow webserver
** It works **
我认为气流可能会在第一次初始化气流数据库时存储一些元数据(例如设置路径),因此您无法更改命令运行目录。 我希望它可以帮助将来的人。 只需检查您的目录!
【讨论】:
我在 /mydir/airflow 中激活了数据库,在 /mydir 中得到了 OP 的错误。进入 /mydir/airflow 解决了这个问题。【参考方案3】:看来您的 gunicorn 有问题。 尝试执行这两个命令:
sudo -H pip3 uninstall -y gunicorn
sudo -H pip3 install gunicorn
它应该可以解决您的问题,导致气流显示您无法清除与 gunicorn 问题相关的错误消息
【讨论】:
【参考方案4】:我做了这个步骤来解决问题:
-
仅为气流创建单独的 virtualenv(我使用 anaconda 分发版)
用
conda activate
激活这个环境
安装气流:pip install apache-airflow
此时错误 No module named 'airflow.www'
显示给我
要修复,请按照以下步骤操作:
-
寻找你的独角兽在哪里:
whereis gunicorn
gunicorn 必须只保留在您的 virtualenv 目录中:/home/yourname/anaconda3/envs/airflow_env/bin/gunicorn
如果它位于两个目录中,请将其放在您的气流环境中。将其全部从另一个人身上删除。
另一种验证 gunicorn 是否在其他目录中的方法是打印您的 PATH 变量:echo $PATH
。在/home/yourname/.local/bin
和PATH 中的另一个anaconda 目录中查找gunicorn。删除所有引用。也从 conda base env 中删除 gunicorn:pip uninstall gunicorn
。
通过这些步骤,我认为您的问题将得到解决。
我使用了 anaconda 发行版,但我认为没有它也可以完成相同的过程。我使用了气流 1.10.0 和 python 3.6。
【讨论】:
【参考方案5】:如果您在安装期间为气流定义了默认主目录 (~/airflow
) 以外的自定义主目录:
-
您需要先导出自定义路径:
export AIRFLOW_HOME=/your/custom/path/airflow
-
转到气流目录,然后运行网络服务器
airflow webserver -p 8080
-
也运行调度程序
airflow scheduler
【讨论】:
【参考方案6】:请检查 gunicorn 是否已安装在服务器中。对我来说,它安装在 /usr/local/bin 中,并且优先于使用气流安装的 gunicorn 版本。卸载较早的一个或修复 $PATH 变量
【讨论】:
【参考方案7】:我通过从气流文件夹本身启动网络服务器解决了这个问题。
我之前尝试从主目录打开服务器,但找不到所需的模块,这可能是这里的情况。
聚会迟到了,但可以帮助到这里的其他人。
【讨论】:
【参考方案8】:我添加了sudo
,它实际上工作得很好。
【讨论】:
欢迎来到 ***。在发布答案或问题之前,请阅读指南。给出与之前其他人相同的答案是没有意义的,请记住,答案可以被视为 cmets。【参考方案9】:我今天遇到了同样的错误,sudo
对我有用
【讨论】:
以上是关于启动气流网络服务器时如何解决“错误:没有名为'airflow.www'的模块”的主要内容,如果未能解决你的问题,请参考以下文章