Что именно должно быть установлено в PYTHONPATH? - программирование
Подтвердить что ты не робот

Что именно должно быть установлено в PYTHONPATH?

Я просматриваю и записываю установочный документ для других разработчиков при работе над проектом python, и я читаю переменную среды PYTHONPATH. Я смотрю на свою текущую систему разработки и думаю, что у меня есть несколько неправильных вещей, из-за которых моя IDE (IntelliJ) ведет себя неправильно при поиске библиотек python.

Я посмотрел документацию здесь и здесь, и я все еще не уверены, что должно быть в переменной среды PYTHONPATH.

У меня PYTHONHOME указана на `C:\Python27 '.

Мой текущий PYTHONPATH установлен на PYTHONHOME. Должен ли я также добавлять каталоги из sys.path?

UPDATE:

Основываясь на приведенной ниже информации, PYTHONPATH не нужно устанавливать, если есть нестандартные библиотеки, которые вы хотите, чтобы python мог найти по умолчанию. Например, когда я установлю wxPython из установщика, он добавит свои библиотеки в PYTHONPATH. Я устанавливаю PYTHONHOME в корневую установку python, чтобы добавить его в свою переменную окружения PATH, чтобы я мог запускать python из любого места.

4b9b3361

Ответ 1

Вам не нужно устанавливать ни один из них. PYTHONPATH может быть настроен на указание дополнительных каталогов с частными библиотеками в них. Если PYTHONHOME не установлен, Python по умолчанию использует каталог, в котором найден python.exe, поэтому dir должен находиться в PATH.

Ответ 2

Для большинства установок вы не должны устанавливать эти переменные, поскольку они не нужны для запуска Python. Python знает, где найти стандартную библиотеку.

Единственная причина для установки PYTHONPATH - это поддерживать каталоги пользовательских библиотек Python, которые вы не хотите устанавливать в глобальном местоположении по умолчанию (т.е. в каталоге site-packages).

Обязательно прочтите: http://docs.python.org/using/cmdline.html#environment-variables

Ответ 3

Вот что я узнал: PYTHONPATH - это каталог для добавления к пути поиска импорта Python "sys.path", который состоит из текущего каталога. CWD, PYTHONPATH, стандартная и общая библиотека, а также библиотека клиентов. Например:

% python3 -c "import sys;print(sys.path)"
['', 
'/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

где первый путь '' обозначает текущий каталог, 2-й путь через

%export PYTHONPATH=/home/username/Documents/DjangoTutorial/mySite 

который можно добавить в ~/.bashrc, чтобы сделать его постоянным, а остальные - стандартные Python и динамическая общая библиотека, а также сторонние библиотеки, такие как django.

Как было сказано, не связывайтесь с PYTHONHOME, даже если установить его в '' или 'None', оболочка python3 перестанет работать:

% export PYTHONHOME=''
% python3
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f18a44ff740 (most recent call first):
Aborted (core dumped)

Обратите внимание, что если вы запустите скрипт Python, CWD будет каталогом скрипта. Например:

[email protected]:~/Documents/DjangoTutorial% python3 mySite/manage.py runserver
==== Printing sys.path ====
/home/username/Documents/DjangoTutorial/mySite # CWD is where manage.py resides
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

Вы также можете добавить путь к sys.path во время выполнения: Предположим, у вас есть файл Fibonacci.py в каталоге ~/Documents/Python:

[email protected]:~/Documents/DjangoTutorial% python3 
>>> sys.path.append("/home/username/Documents")
>>> print(sys.path)
['', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', 
'/home/username/Documents']
>>> from Python import Fibonacci as fibo

или через

% PYTHONPATH=/home/username/Documents:$PYTHONPATH
% python3
>>> print(sys.path)
['', 
'/home/username/Documents', '/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
>>> from Python import Fibonacci as fibo