由于来自未来软件包的值错误,气流无法启动



我以前能够从我的特定 anaconda 环境中运行airflow webserverairflow scheduler,但现在当我运行这些命令时,我得到一个 ValueError 并且服务器都没有启动。

错误如下:

(airflow_test) guy-mbp:airflow guy$ airflow webserver
Traceback (most recent call last):
File "/Users/guy/miniconda3/envs/airflow_test/bin/airflow", line 25, in <module>
from airflow.configuration import conf
File "/Users/guy/miniconda3/envs/airflow_test/lib/python3.7/site-packages/airflow/__init__.py", line 31, in <module>
from airflow.utils.log.logging_mixin import LoggingMixin
File "/Users/guy/miniconda3/envs/airflow_test/lib/python3.7/site-packages/airflow/utils/__init__.py", line 24, in <module>
from .decorators import apply_defaults as _apply_defaults
File "/Users/guy/miniconda3/envs/airflow_test/lib/python3.7/site-packages/airflow/utils/decorators.py", line 34, in <module>
from airflow import settings
File "/Users/guy/miniconda3/envs/airflow_test/lib/python3.7/site-packages/airflow/settings.py", line 36, in <module>
from airflow.configuration import conf, AIRFLOW_HOME, WEBSERVER_CONFIG  # NOQA F401
File "/Users/guy/miniconda3/envs/airflow_test/lib/python3.7/site-packages/airflow/configuration.py", line 29, in <module>
from future import standard_library
ValueError: source code string cannot contain null bytes

使用的python版本是3.7.5,apache-airflow版本是1.10.6。

我最近将一些新软件包下载到环境中。他们会导致这个问题出现吗?

我找到了导致我的问题的原因。

当前版本的张量流缺少一个函数,tokenizer_from_json。此功能在keras.preprocessing.text中可用,但在tensorflow.keras.preprocessing.text中不可用。为了尝试获取该功能,我安装了 keras。安装导致了keras和tensorflow之间的冲突,conda解决得非常糟糕。冲突导致了上述问题中的错误。

为了解决这个问题,我首先使用以下命令保存了环境文件

conda env export > environment.yml

然后我使用

conda env remove --name airflow_test

然后我在 ananconda 中创建了一个全新的环境,并安装了除 keras 之外的所有我需要的软件包。

在对 tensorflow 进行更多挖掘后,我发现当我安装 tensorflow 时,keras 包在某种程度上是作为依赖项安装的,并且可以通过keras_preprocessing获得,可以这样使用

from keras_preprocessing.text import tokenizer_from_json

希望这对某人有所帮助。

最新更新