Добавление каталога в sys.path/PYTHONPATH

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

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

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

Ответ 1

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

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

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

Ответ 2

Вы можете использовать:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path