我有与此Can't get Python to import from a different folder类似的问题,那里的解决方案无法解决我的问题。
我正在使用Airflow lib。该库更新了一个操作员,并且由于我目前无法升级Airflow版本,因此我想手动下载操作员.py
文件并在我的代码中手动使用它。
airflow
-dags
--mydag.py
-AddedOperators
--sagemaker_tuning_operator.py
--__init__.py (empty file)
sagemaker_tuning_operator.py
是此文件:
https://github.com/apache/airflow/blob/master/airflow/contrib/operators/sagemaker_tuning_operator.py
它包含类SageMakerTuningOperator
在我的mydag.py
中,我这样做:
from AddedOperators.sagemaker_tuning_operator import SageMakerTuningOperator
Airflow尝试解析mydag.py
时,我得到:
没有名为AddedOperators.sagemaker_tuning_operator的模块
答案 0 :(得分:2)
检查项目目录是否在系统路径中。您可以按以下方式进行检查:
@Override
public void onError(Status status) {
Log.i( TAG, "An error occurred: " + status.getStatusCode () );
}
请注意,在运行Python脚本时,sys.path不在乎 您当前的“工作目录”是。它只在乎通往 剧本。例如,如果我的外壳当前位于Airflow / 文件夹,然后运行python ./dags/mydag.py,然后sys.path包括 气流/损失/但不是气流/
如果您的项目目录不在sys路径中,则可以执行以下操作:
动态添加它。
import sys
print(sys.path)
在项目根文件夹中将所有必需的模块导入到app.py之类的文件中,然后从此处调用。