добавление каталога в систему.путь / PYTHONPATH
Я пытаюсь импортировать модуль из определенного каталога.
проблема в том, что если я использую sys.path.append(mod_directory) чтобы добавить путь, а затем открыть интерпретатор python, каталог mod_directory добавляется в конец списка sys.путь. Если я экспортирую PYTHONPATH переменная перед открытием интерпретатора python каталог добавляется в начало списка. В последнем случае я могу импортировать модуль, но в первом я не могу.
может кто-нибудь объяснить, почему это происходит и дать мне решение, чтобы добавить mod_directory для начала, внутри скрипт на python ?
5 ответов:
это работает, как описано. Любые пути, указанные в
PYTHONPATHдокументируются как обычно после рабочего каталога, но перед стандартными путями, предоставленными интерпретатором.sys.path.append()добавляет к существующему пути. Смотрите здесь и здесь. Если вы хотите, чтобы конкретный каталог был первым, просто вставьте его в начало sys.путь:import sys sys.path.insert(0,'/path/to/mod_directory')тем не менее, обычно существуют лучшие способы управления импортом, чем с помощью
PYTHONPATHили манипулированиеsys.pathнапрямую. См., например, ответы на этот вопрос.
временное изменение dirs хорошо работает для импорта:
cwd = os.getcwd() os.chdir(<module_path>) import <module> os.chdir(cwd)
что касается меня, мне нужно caffe к моему пути python. Я могу добавить его путь к файлу
/home/xy/.bashrcдобавить
export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH.мой .
но когда я использую pycharm, путь все еще нет.
так что я могу добавить путь к
PYTHONPATHпеременная, путем запуска - > изменить конфигурацию.
при запуске скрипта Python из Powershell под Windows, это должно работать:
$pathToSourceRoot = "C:/Users/Steve/YourCode" $env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required" # Now run the actual script python your_script.py

Comments