[英]airflow initdb: cannot import name 'Pendulum' from 'pendulum'
I installed airflow within one of my Anaconda envs named engdados.我在名为 engdados 的 Anaconda 环境之一中安装了 airflow。 When I execute the command airflow initdb I'm getting the following error:
airflow initdb: cannot import name 'Pendulum' from 'pendulum'
.当我执行命令 airflow initdb 我收到以下错误:
airflow initdb: cannot import name 'Pendulum' from 'pendulum'
。 The full trace back is shown below:完整的追溯如下所示:
(engdados) guilherme@Athena-LNX:~$ airflow initdb
Traceback (most recent call last):
File "/home/guilherme/anaconda3/envs/engdados/bin/airflow", line 25, in <module>
from airflow.configuration import conf
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/__init__.py", line 47, in <module>
settings.initialize()
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/settings.py", line 403, in initialize
configure_adapters()
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/settings.py", line 319, in configure_adapters
from pendulum import Pendulum
ImportError: cannot import name 'Pendulum' from 'pendulum' (/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/pendulum/__init__.py)
(engdados) guilherme@Athena-LNX:~$ service start mysql$
start: unrecognized service
(engdados) guilherme@Athena-LNX:~$ service mysql start$
Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload|status|bootstrap
(engdados) guilherme@Athena-LNX:~$ airflow initdb
Traceback (most recent call last):
File "/home/guilherme/anaconda3/envs/engdados/bin/airflow", line 25, in <module>
from airflow.configuration import conf
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/__init__.py", line 47, in <module>
settings.initialize()
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/settings.py", line 403, in initialize
configure_adapters()
File "/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/airflow/settings.py", line 319, in configure_adapters
from pendulum import Pendulum
ImportError: cannot import name 'Pendulum' from 'pendulum' (/home/guilherme/anaconda3/envs/engdados/lib/python3.8/site-packages/pendulum/__init__.py)
The problem is: the pendulum is installed!问题是:摆锤装好了! When I execute the
conda list
command I can see the Pendulum there as follows:当我执行
conda list
命令时,我可以看到 Pendulum 如下:
Name Version Build Channel
pendulum 2.1.2 pypi_0 pypi
What I've checked so far:到目前为止我检查过的内容:
Is the engdados environment activated? engdados 环境是否激活? Yes
是的
Is the Pendulum installed on Anaconda environment? Pendulum 是否安装在 Anaconda 环境中? Yes
是的
The version of Pendulum the Anaconda shows is different of the one showed in conda list (1.4.4). Anaconda 显示的 Pendulum 版本与 conda 列表 (1.4.4) 中显示的版本不同。 Why?
为什么?
I have no idea what is going on.我不知道发生了什么。 Thanks in advance.
提前致谢。
In pendulum version 2, the class pendulum.Pendulum
is replaced with pendulum.DateTime
.在 pendulum 版本 2 中, class
pendulum.Pendulum
被pendulum.DateTime
替换。
Your version of airflow is expecting pendulum 1.x but your environment has 2.x.您的 airflow 版本需要摆 1.x,但您的环境有 2.x。
You may be able to fix this by making a new env and installing airflow 2.0 (which uses pendulum 2.x).您可以通过创建新环境并安装 airflow 2.0(使用 pendulum 2.x)来解决此问题。 If you must use airflow < 2.0, you will need to pin pendulum to < 2.0 (eg using pip constraints).
如果您必须使用 airflow < 2.0,则需要将钟摆固定到 < 2.0(例如使用 pip 约束)。
Also if you using Pendulum in your code, for example in custom Operators you can add此外,如果您在代码中使用 Pendulum,例如在自定义运算符中,您可以添加
try:
from pendulum import DateTime as Pendulum
except ImportError:
from pendulum import Pendulum
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.