Ошибка импорта в VSCode, несмотря на установку PYTHONPATH
У меня есть среда воздушного потока, локально развернутая на 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}
Где я неправ? Я бы хотел разобраться и исправить эту ошибку, пожалуйста.
Ответы
Добавьте следующий оператор в начало файла " facebook_operators.py", чтобы помочь VSCode найти файл, который необходимо импортировать:
import os,sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
(По умолчанию VSCode находит файл из родительской папки текущего открытого файла. Мы можем использовать приведенный выше оператор, чтобы добавить путь к файлу, который необходимо импортировать, в системный путь, и тогда VSCode сможет его найти.)