我以前能够从我的特定 anaconda 环境中运行airflow webserver
和airflow 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
希望这对某人有所帮助。