关于python:无法从其他文件夹导入类

Can not import class from another folder

我有一个类似的问题,因为这不能让python从另一个文件夹导入解决方案无法解决我的问题。

我正在使用气流库。lib更新了其中一个操作程序,由于此时无法升级我的airflow版本,我想手动下载操作程序.py文件并在我的代码手册中使用它。

1
2
3
4
5
6
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中,我是:

1
from AddedOperators.sagemaker_tuning_operator import SageMakerTuningOperator

当气流试图分析mydag.py时,我得到:

No module named AddedOperators.sagemaker_tuning_operator


检查项目目录是否在系统路径中。您可以按如下方式检查:

1
2
3
import sys

print(sys.path)

Note that when running a Python script, sys.path doesn’t care what
your current"working directory" is. It only cares about the path to
the script. For example, if my shell is currently at the Airflow/
folder and I run python ./dags/mydag.py, then sys.path includes
Airflow/dags/ but NOT Airflow/

如果项目目录不在sys路径中,可以执行以下操作:

  • 动态地包括它。

    1
    2
    3
    4
    import sys
    sys.path.insert(0, 'path/to/your/')

    # import your module now

  • 将项目根文件夹中所有必需的模块导入到app.py之类的文件中,然后从此处调用。