Почему пакеты pip по умолчанию не установлены в $ PATH? - PullRequest
0 голосов
/ 20 мая 2018

Обычно при использовании rubygems в экосистеме ruby или npm / yarn в экосистеме JavaScript пакеты устанавливаются где-то на $PATH или, по крайней мере, вы получаете указание добавить место установки пакета в вашpath $PATH.

Кажется, что с pip в экосистеме python на это никогда не делается акцент.Вместо этого вам предлагается запускать модули через python -m <name> и т. Д.

Мне кажется, это немного странно, это было просто дизайнерское решение?Является ли хорошей практикой помещать site-packages или любое другое место, которое pip использует в $PATH?Иногда двоичный файл добавляется к /usr/local/bin (и иногда с именем, отличным от самого пакета, например django-admin вместо django с pip install Django, тогда как двоичный файл обычно совпадает с именем пакета в ruby / JavaScriptэкосистемы), например, я вижу, но это все время?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы путаете $PATH и $PYTHONPATH.site-packages для библиотек , $PATH для программ (двоичные файлы и скрипты).pip устанавливает библиотеки в свой site-packages и скрипты в соответствующий каталог bin/;Например, если site-packages равно /usr/local/lib/pythonX.Y/site-packages, сценарии установлены в /usr/local/bin/.

pip не проверяет, находится ли /usr/local/bin/ в $PATH.Что ж, я согласен с вами - он должен проверить и напомнить пользователю добавить каталог bin/ в $PATH, если его там еще нет.

0 голосов
/ 20 мая 2018

Каталог site-packages для конкретной установки Python автоматически добавляется в sys.path при запуске двоичного файла для установки.Когда этот двоичный файл выполняет import modname, он просматривает каталоги на sys.path.Поэтому, когда вы запускаете pip install с определенным двоичным файлом Python, pip по умолчанию помещает пакет в site-packages для этого двоичного файла, чтобы двоичный файл мог импортировать пакет.Продвинутый подержанный может делать более сложные вещи.

...