Ошибка импорта в VSCode, несмотря на установку PYTHONPATH

Oct 26 2020

У меня есть среда воздушного потока, локально развернутая на WSL, и я использую VScode для отладки и кодирования.

Структура папок моего приложения выглядит следующим образом:

~/workspaces
|--- .env
|---organization/gcp/datalake
    |--- dags
        |--- //My dags
    |--- plugins
        |--- __init.py__
        |--- operators
            |--- __init.py__
            |--- facebook_operators.py
        |--- hooks
            |--- __init.py__
            |--- facebook_hooks.py

У меня проблемы с пониманием поведения VSCode в отношении импорта.

Я добавил dagsи pluginsпапки в с PYTHONPATHпомощью .envфайла. Мой VSCode открывается прямо в workspacesкаталоге.

Проблема :

Я получаю ошибки импорта, хотя могу успешно go to definitionимпортировать класс.

Пример: в моем facebook_operators.py

from hooks.facebook_hooks import FacebookAdsHook вызывает следующую ошибку:

Нет имени facebook_hooks в модуле hooks

Содержимое моего .envфайла:

PROJECTDIR=~/workspaces/organization/gcp/datalake
PYTHONPATH=${PROJECTDIR}/plugins PYTHONPATH=${PROJECTDIR}/dags:${PYTHONPATH}

Где я неправ? Я бы хотел разобраться и исправить эту ошибку, пожалуйста.

Ответы

JillCheng Oct 27 2020 at 02:14

Добавьте следующий оператор в начало файла " facebook_operators.py", чтобы помочь VSCode найти файл, который необходимо импортировать:

import os,sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

(По умолчанию VSCode находит файл из родительской папки текущего открытого файла. Мы можем использовать приведенный выше оператор, чтобы добавить путь к файлу, который необходимо импортировать, в системный путь, и тогда VSCode сможет его найти.)