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


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

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

6 87

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, by os.environ['PATHPYTHON']=/some/path, тогда вам нужно позвонить os.system('python') чтобы перезапустить оболочку python, чтобы сделать новый добавленный путь эффективным.

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

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