Не могу импортировать класс из другой папки - PullRequest
0 голосов
/ 03 марта 2019

У меня похожая проблема: Не удается заставить Python импортировать из другой папки Решение не решает мою проблему.

Я работаю с 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

не существует

1 Ответ

0 голосов
/ 03 марта 2019

Проверьте, находится ли каталог вашего проекта в системном пути или нет.Вы можете проверить это следующим образом:

import sys

print(sys.path)

Обратите внимание, что при запуске скрипта Python для sys.path не важно, какой у вас текущий «рабочий каталог».Он заботится только о пути к сценарию.Например, если моя оболочка в данный момент находится в папке Airflow /, и я запускаю python ./dags/mydag.py, то sys.path включает в себя Airflow / dags / но НЕ Airflow /

Если вы проецируетекаталог не находится в пути sys, вы можете сделать следующее:

  • Включить его динамически.

    import sys
    sys.path.insert(0, 'path/to/your/')
    
    # import your module now
    
  • Импортировать все необходимые модули в ваш проекткорневая папка в каком-то файле, например app.py, а затем позвоните отсюда.

...