который python против PYTHONPATH - PullRequest
       17

который python против PYTHONPATH

5 голосов
/ 11 февраля 2020

Если я наберу which python я получу: /home/USER/anaconda3/bin/python Если я наберу echo $PYTHONPATH Я получу: /home/USER/terrain_planning/devel/lib/python2.7/dist-packages:/opt/ros/melodic/lib/python2.7/dist-packages

Разве это не должно быть одинаковым? И не лучше ли установить его: usr/lib/python/ Как бы я это сделал? Добавить его в PYTHONPATH или установить PYTHONPATH на это? Но как установить which python?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы смешиваете 2 переменные среды:

  • PATH, где which ищет исполняемые файлы, когда к ним обращаются только по имени. Эта переменная представляет собой список (разделенный двоеточием / точкой с запятой в зависимости от платформы) каталогов, содержащих исполняемые файлы. Не python указан c. which python просто просматривает эту переменную и печатает полный путь
  • PYTHONPATH - это python -specifi c список каталогов (двоеточие / точка с запятой, разделенные как PATH), где python ищет пакеты, которые не установлены непосредственно в дистрибутиве python. Имя и формат очень близки к переменной system / shell PATH, но они вообще не используются операционной системой, просто python.
1 голос
/ 11 февраля 2020

which python - это путь к вашему python переводчику. PYTHONPATH - это переменная среды, в которой ваша Python программа может искать модули для импорта.

См. Раздел 1.2

Если это не то же самое ? И не лучше ли установить его: usr / lib / python / Как бы я это сделал? Добавить его в PYTHONPATH или установить PYTHONPATH на это? Но как установить какие python?

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

import sys
print(sys.path)
sys.path.append("another/path/to/search")
...