Импорт пакетов работает в Python Интерактивном окне (в VSCode), но не в терминале python? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть пользовательский пакет Python (my_package), расположенный в каталоге (super_dir). У меня есть сценарий (my_script.py) во вложенном каталоге super_dir (назовем его sub_dir), который импортирует my_package и использует его.

Я получаю ошибку ModuleNotFound, если я запускаю скрипт из окна терминала (где мой рабочий каталог super_dir) с помощью вызова python sub_dir/my_script.py. Это работает , однако, если my_script.py находится внутри super_dir, а не внутри sub_dir и я просто звоню python my_script.py. Это также работает, если я запускаю my_script.py в VSCode в интерактивном окне Python (даже если мой рабочий каталог sub_dir), пока у меня есть строки

import os
os.chdir('....further_paths/super_dir/') 

на верхняя часть сценария.

У меня вопрос: как я могу заставить скрипт запускаться из терминала так, чтобы он мог оставаться в пределах sub_dir, но все равно мог импортировать my_package, даже если my_package находится «вверх» целый каталог?

Даже если строки ^ выше (которые изменяют текущий каталог) включены вверху скрипта, я все равно получаю ошибку ModuleNotFound, пока я запускаю скрипт из окна терминала и my_script.py не находится в super_dir.

Заранее спасибо, надеюсь, мой вопрос был ясен!

1 Ответ

0 голосов
/ 16 апреля 2020

У вас есть два варианта. Во-первых, вам нужно установить PYTHONPATH на super_dir, чтобы при выполнении скрипта Python он просматривал пакеты во время импорта.

Другой вариант - сделать my_script модулем и использовать его. python -m sub_dir.my_script чтобы выполнить код.

...