启动气流网络服务器时如何解决“错误:没有名为'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'的模块”的主要内容,如果未能解决你的问题,请参考以下文章

气流:如何删除 DAG?

启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止

如何使用气流检查长时间运行的 http 任务的状态?

如何防止气流回填dag运行?

气流 - 如何仅“填充 DagBag”一次

如何删除气流中的默认示例 dag