无法从另一个文件夹中导入类。

10 浏览
0 Comments

无法从另一个文件夹中导入类。

我遇到了与这个问题类似的问题:无法从不同文件夹导入Python,那里的解决方案不能解决我的问题。

我正在使用Airflow库。该库更新了其中一个操作器,由于我目前无法升级我的Airflow版本,我想手动下载操作器的.py文件,并在我的代码中手动使用它。

airflow
    -dags
        --mydag.py
    -AddedOperators
        --sagemaker_tuning_operator.py
        --__init__.py   (空文件)

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
0 Comments

从上述内容中可以得出以下结论:

问题原因:

- 无法从另一个文件夹导入类的原因可能是项目目录没有在系统路径(sys.path)中。

解决方法:

- 检查项目目录是否在系统路径中,可以使用以下代码来检查:import sys print(sys.path)

- 如果项目目录不在sys.path中,可以通过以下方法解决:

- 动态地将项目目录添加到sys.path中,代码如下:

import sys

sys.path.insert(0, 'path/to/your/')

# 现在可以导入你的模块了

- 在项目根目录的某个文件(例如app.py)中导入所有所需的模块,然后从这个文件调用。

另外,也可以看到在某些情况下,以上解决方法可能并不适用,需要根据具体情况进行调整和尝试。

0