
Когда я устанавливаю программу «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
каталогом, который я использовал в качестве ссылок: