我注意到,每当我在 Python 中导入气流时,它都会自动在我的主目录中创建一个气流目录。从字面上看就是这样
$ python
Python 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:36:13) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.exists(os.path.join(os.path.expanduser('~'), 'airflow'))
False
>>> import airflow
>>> os.path.exists(os.path.join(os.path.expanduser('~'), 'airflow'))
True
我明白这是因为我没有设置 AIRFLOW_HOME。因此,如果未设置 AIRFLOW_HOME 环境变量,airflow 似乎会使用主目录作为默认位置。
但是为什么它首先要这样做呢? 我只是导入气流库,甚至没有开始执行任何操作。
是否可以禁用此行为?
你观察到的行为是 Airflow 初始化过程的一部分,即使你只是导入库也是如此。Airflow 在导入时会做几件事,包括创建默认的 AIRFLOW_HOME 目录(如果它不存在)。
这是因为 Airflow 需要一个地方来存储它的配置文件(
airflow.cfg
),数据库,以及像 DAG 这样的其他文件。默认情况下,如果
AIRFLOW_HOME
环境变量没有被设置,它会在你的主目录中创建
airflow
目录。
虽然你不能阻止 Airflow 在导入时检查和创建 AIRFLOW_HOME 目录,但你可以通过几种方法来控制它的位置,而不用在每次导入时都创建它:
-
设置
AIRFLOW_HOME
环境变量: 这是推荐的方法。在运行任何 Python 代码之前,在你的 shell 中设置AIRFLOW_HOME
环境变量到你想要的位置。bash export AIRFLOW_HOME=/path/to/your/airflow_home
-
在你的代码中设置
AIRFLOW_HOME
: 你也可以在你的 Python 代码中设置AIRFLOW_HOME
环境变量,但最好在导入 Airflow 之前这样做。python import os os.environ['AIRFLOW_HOME'] = '/path/to/your/airflow_home' import airflow
通过使用这些方法之一,你就可以控制 Airflow 在哪里创建它的目录结构,并避免在你只是想导入库的时候出现意外的目录。
标签:python,airflow From: 78790646