добавление каталога в систему.путь / PYTHONPATH



Я пытаюсь импортировать модуль из определенного каталога.



проблема в том, что если я использую sys.path.append(mod_directory) чтобы добавить путь, а затем открыть интерпретатор python, каталог mod_directory добавляется в конец списка sys.путь. Если я экспортирую PYTHONPATH переменная перед открытием интерпретатора python каталог добавляется в начало списка. В последнем случае я могу импортировать модуль, но в первом я не могу.



может кто-нибудь объяснить, почему это происходит и дать мне решение, чтобы добавить mod_directory для начала, внутри скрипт на python ?

778   5  

5 ответов:

это работает, как описано. Любые пути, указанные в PYTHONPATH документируются как обычно после рабочего каталога, но перед стандартными путями, предоставленными интерпретатором. sys.path.append() добавляет к существующему пути. Смотрите здесь и здесь. Если вы хотите, чтобы конкретный каталог был первым, просто вставьте его в начало sys.путь:

import sys
sys.path.insert(0,'/path/to/mod_directory')

тем не менее, обычно существуют лучшие способы управления импортом, чем с помощью PYTHONPATH или манипулирование sys.path напрямую. См., например, ответы на этот вопрос.

вы могли бы использовать:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+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 переменная, путем запуска - > изменить конфигурацию.

enter image description here

при запуске скрипта 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

    Ничего не найдено.