Почему pip установил пакет в ~/.local/bin?

Почему pip установил пакет в ~/.local/bin?

Когда я устанавливаю программу «Taurus Blazemeter 'bzt'» с помощью pip, она в итоге устанавливается в ~/.local/bin папку.

mkdir ~/bzt && cd ~/bzt
sudo apt-get install python default-jre-headless python-tk python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
sudo pip install bzt

Кто-нибудь знает, ~/.localдля чего нужна эта папка и почему такая программа Python устанавливается именно туда?

решение1

Короткий ответ: это ~/.local/binзначение по умолчанию для каталога скриптов пользователя Python, и это pipможет устанавливать исполняемые файлы в этот каталог, если он выполняет локальную установку пользователя. Он также может устанавливать файлы в другие подкаталоги ~/.local, что является значением по умолчанию для каталога базового пользователя. Подробнее ниже.


Я не уверен, является ли это его самым ранним появлением, но ~/.localкаталог появляется вспецификация иерархии файловой системыпринадлежащийсистемдсистема init, где определяются несколько подкаталогов ~/.local:

~/.local/bin

Исполняемые файлы, которые должны отображаться в пути поиска $PATH пользователя. Рекомендуется не помещать в этот каталог исполняемые файлы, которые не полезны для вызова из оболочки; вместо этого их следует помещать в подкаталог ~/.local/lib. Следует проявлять осторожность при размещении в этом месте двоичных файлов, зависящих от архитектуры, что может быть проблематично, если домашний каталог используется несколькими хостами с разными архитектурами.

~/.local/lib

Статические, частные данные поставщика, совместимые со всеми архитектурами.

~/.local/lib/арх-id

Расположение для размещения публичных динамических библиотек. Идентификатор архитектуры для использования определяется в списке спецификаторов архитектуры Multiarch (кортежи).

~/.local/share

Ресурсы, общие для нескольких пакетов, например шрифты или иллюстрации. Обычно точное расположение и формат файлов, хранящихся в этом каталоге, зависят от спецификаций, которые обеспечивают совместимость. Если приложение обнаруживает установленный $XDG_DATA_HOME, оно должно использовать указанный в нем каталог вместо этого каталога.

Принятие каталога ~/.localв Python, по-видимому, было введено в Python 2.6 и задокументировано в PEP (Python Enhancement Proposal) 370:

Спецификация включает в себя следующие определения для систем Unix (включая Mac OS X).

  • База данных пользователей

    ~/.local

  • Каталог пользовательских скриптов:

    ~/.local/bin

  • Каталог сайта пользователя:

    ~/.local/lib/python2.6/site-packages

  • Каталог пользовательских данных:

    ~/.local/lib/python2.6

Из этого можно сделать вывод, что в Python есть концепция так называемого «Базового каталога пользователей» и что его значение по умолчанию равно ~/.local. Базовый каталог пользователей обсуждается вДокументация Python для siteмодуля. В частности, он предоставляет методы для определения значений вашего User Base Directory и User Site Directory, флагов --user-baseи --user-siteпараметров. Вы можете использовать их следующим образом:

user@host:~$ python -m site --user-base

/home/user/.local

user@host:~$ python -m site --user-site

/home/user/.local/lib/python2.7/site-packages

На сайтах StackExchange опубликовано несколько вопросов, связанных с ~/.localкаталогом, который я использовал в качестве ссылок:

Связанный контент