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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

os.environ["PYTHONPATH"] = "..."

Но поскольку ваш интерпретатор уже работает, это не будет иметь никакого эффекта. Лучше с помощью

import sys
sys.path.append("...")

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

Ответ 3

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

Если вы поместите 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

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

Ответ 4

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

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