В скрипт Python, как установить PYTHONPATH?



Я знаю, как установить его в моем/etc / профиле и в переменных окружения.



Но что, если я хочу установить его во время сценария?
Это импорт ОС, sys? Как мне это сделать?

730   6  

6 ответов:

Вы не устанавливаете PYTHONPATH, вы добавляете записи в sys.path. Это список каталогов, в которых следует искать пакеты Python, поэтому вы можете просто добавить свои каталоги в этот список.

sys.path.append('/path/to/whatever')

Фактически, sys.path инициализируется путем разбиения значения PYTHONPATH на символ разделителя пути (: в Linux-подобных системах, ; в Windows).

Вы также можете добавить каталоги с помощью site.addsitedir, и этот метод также будет принимать во внимание .pth файлы, существующие в пределах каталоги вы проходите. (Это не относится к каталогам, указанным в PYTHONPATH.)

Вы можете получить и установить переменные окружения через os.environ:

import os
user_home = os.environ["HOME"]

os.environ["PYTHONPATH"] = "..."
Но поскольку ваш интерпретатор уже запущен, это не будет иметь никакого эффекта. Вам лучше использовать
import sys
sys.path.append("...")

- это массив, в который ваш PYTHONPATH будет преобразован при запуске интерпретатора.

Извините за повторный вопрос, но я думаю, что это может кому-то помочь:

Если вы ставите sys.path.append('dir/to/path') без проверки он уже добавлен, вы можете сгенерировать длинный список в sys.path. Для этого я рекомендую следующее:

import sys
import os # if you want this directory

try:
    sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
    sys.path.append('/dir/path') # Or os.getcwd() for this directory

Извините, если я раздражал кого-то, открывая вопрос.

PYTHONPATH заканчивается в sys.путь , который можно изменить во время выполнения.

import sys
sys.path += ["whatever"]

Вы можете установить PYTHONPATH, по os.environ['PATHPYTHON']=/some/path, затем вам нужно вызвать os.system('python'), чтобы перезапустить оболочку python, чтобы сделать новый добавленный путь эффективным.

Это тоже работает:

import sys
sys.path.extend(["/path/to/dotpy/file/"])

Comments

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