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

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

125
TIMEX 24 Июн 2010 в 12:25

6 ответов

Лучший ответ

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

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

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

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

179
David Z 24 Июн 2010 в 08:28

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

1
tesla1060 31 Янв 2018 в 13:21

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

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

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

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

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

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

35
declension 6 Июн 2018 в 19:11

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

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

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

15
Francisco Manuel Garca Botella 12 Май 2016 в 11:33

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

import sys
sys.path += ["whatever"]
5
unbeli 24 Июн 2010 в 08:29

У меня в Linux это тоже работает:

import sys
sys.path.extend(["/path/to/dotpy/file/"])
-1
lashgar 15 Фев 2019 в 00:33