我遇到了一个奇怪的进口气流问题.我想创建一个其他人可以从中导入的模块.我还想在此模块上运行单元测试.然而,我注意到,只要你从气流包中导入任何东西,它就会try 运行气流.
示例:
# myfile.py
from airflow import DAG
print("Hello world")
然后用python myfile.py
运行它,结果是:
(.venv) c:\Users\Jarro\Development\airflow-tryout-import>python myfile.py
WARNING:root:OSError while attempting to symlink the latest log directory
Traceback (most recent call last):
File "c:\Users\Jarro\Development\airflow-tryout-import\myfile.py", line 1, in <module>
from airflow import DAG
File "C:\Users\Jarro\Development\airflow-tryout-import\.venv\Lib\site-packages\airflow\__init__.py", line 68, in <module>
settings.initialize()
File "C:\Users\Jarro\Development\airflow-tryout-import\.venv\Lib\site-packages\airflow\settings.py", line 559, in initialize
configure_orm()
File "C:\Users\Jarro\Development\airflow-tryout-import\.venv\Lib\site-packages\airflow\settings.py", line 237, in configure_orm
raise AirflowConfigException(
airflow.exceptions.AirflowConfigException: Cannot use relative path: `sqlite:///C:\Users\Jarro/airflow/airflow.db` to connect to sqlite. Please use absolute path such as `sqlite:////tmp/airflow.db`.
除了错误本身,我实际上更担心的是,我似乎无法从Airflow导入东西,而没有副作用(如数据库初始化).在这件事上我是不是全错了?有没有其他方法可以从Airflow导入东西,而不会产生这些副作用,例如用于打字?