Я пытаюсь импортировать модуль из определенного каталога.
Проблема в том, что если я использую Сыс.путь.добавить(mod_directory)
, чтобы добавить путь и затем откройте интерпретатор Python, mod_directory в каталог добавляется в конец списка.sys файла.путь. Если я экспортировать PYTHONPATH
переменной перед открытием интерпретатор Python, каталог добавляется в начало списка. В последнем случае я могу импортировать модуль, но в бывшем, я не могу.
Может кто-нибудь объяснить, почему это происходит и дать мне решение, чтобы добавить mod_directory
на старт, внутри скрипт Python ?
Это работает, как описано. Все пути, указанные в PYTHONPATH фиксируются, как правило, приходят после рабочего каталога, но до стандартного переводчика-поставляется путей. пакет sys.путь.добавляет функции append()
к существующему пути. Смотрите здесь и здесь. Если вы хотите, чтобы конкретный каталог на первом месте, просто вставьте его в голове представления sys.путь:
import sys
sys.path.insert(0,'/path/to/mod_directory')
Что сказал, там, как правило, более эффективные способы управлять импортом, чем с помощью PYTHONPATH
работе `представление sys.путь напрямую. См., например, ответы на этот вопрос.
Вы могли бы использовать:
import os
path = 'the path you want'
os.environ['PATH'] += ':'+path
Как для меня, мне нужно кафе к своему пути питона. Я могу добавить его's путь к файлу `/дом/ху/.bashrc с помощью добавить
экспорт PYTHONPATH=/домой/ху/кафе-Мастер/питон:$PYTHONPATH`.
к моему /дом/ху/.файл bashrc
.
Но когда я использую pycharm, путь все еще нет.
Так что я могу добавить путь к PYTHONPATH
переменная, на бегу-и GT; изменить конфигурацию.
Временное изменение Дирс работает хорошо для импорта:
cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
При запуске скрипта на языке Python с помощью PowerShell в Windows, это должно работать:
$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"
# Now run the actual script
python your_script.py