Warum hat Pip ein Paket in ~/.local/bin installiert?

Warum hat Pip ein Paket in ~/.local/bin installiert?

Wenn ich dieses Programm „Taurus Blazemeter ‚bzt‘“ mit Pip installiere, wird es letztendlich in ~/.local/bin einem Ordner installiert.

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

Weiß jemand, wozu dieser ~/.localOrdner dient und warum ein Python-Programm wie dieses dort installiert werden würde?

Antwort1

Die kurze Antwort lautet: Dies ~/.local/binist der Standardwert des Benutzerskriptverzeichnisses von Python und es pipkönnen ausführbare Dateien in dieses Verzeichnis installiert werden, wenn eine lokale Benutzerinstallation durchgeführt wird. Es können auch Dateien in anderen Unterverzeichnissen von installiert werden ~/.local, was der Standardwert des Benutzerbasisverzeichnisses ist. Weitere Einzelheiten finden Sie weiter unten.


Ich bin nicht sicher, ob dies die früheste Einführung ist, aber das ~/.localVerzeichnis erscheint in derSpezifikation der DateisystemhierarchiedessystemdInit-System, wo es mehrere Unterverzeichnisse von definiert ~/.local:

~/.local/bin

Ausführbare Dateien, die im $PATH-Suchpfad des Benutzers erscheinen sollen. Es wird empfohlen, keine ausführbaren Dateien in diesem Verzeichnis abzulegen, die nicht für den Aufruf aus einer Shell nützlich sind. Diese sollten stattdessen in einem Unterverzeichnis von ~/.local/lib abgelegt werden. Beim Ablegen von architekturabhängigen Binärdateien an dieser Stelle ist Vorsicht geboten, da dies problematisch sein kann, wenn das Home-Verzeichnis von mehreren Hosts mit unterschiedlichen Architekturen gemeinsam genutzt wird.

~/.local/lib

Statische, private Anbieterdaten, die mit allen Architekturen kompatibel sind.

~/.local/lib/arch-id

Speicherort für öffentliche dynamische Bibliotheken. Die zu verwendende Architekturkennung ist in der Liste „Multiarch Architecture Specifiers (Tuples)“ definiert.

~/.local/teilen

Von mehreren Paketen gemeinsam genutzte Ressourcen, wie z. B. Schriftarten oder Grafiken. Normalerweise unterliegen der genaue Speicherort und das Format der in diesem Verzeichnis gespeicherten Dateien Spezifikationen, die die Interoperabilität gewährleisten. Wenn eine Anwendung feststellt, dass $XDG_DATA_HOME gesetzt ist, sollte sie das darin angegebene Verzeichnis anstelle dieses Verzeichnisses verwenden.

Die Übernahme des ~/.localVerzeichnisses durch Python scheint in Python 2.6 eingeführt worden zu sein und ist in PEP (Python Enhancement Proposal) 370 dokumentiert:

Die Spezifikation enthält die folgenden Definitionen für Unix-Systeme (einschließlich Mac OS X).

  • Benutzerbasisverzeichnis

    ~/.local

  • Benutzerskriptverzeichnis:

    ~/.local/bin

  • Benutzer-Site-Verzeichnis:

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

  • Benutzerdatenverzeichnis:

    ~/.local/lib/python2.6

Daraus können wir schließen, dass Python das Konzept eines sogenannten „Base User Directory“ hat und dass dessen Standardwert ist ~/.local. Das Base User Directory wird imPython-Dokumentation für das siteModul. Insbesondere bietet es Methoden zum Bestimmen der Werte Ihres User Base Directory und User Site Directory sowie der --user-baseOptionsflags --user-site. Sie können sie folgendermaßen verwenden:

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

Auf StackExchange-Sites wurden mehrere Fragen zu dem ~/.localVerzeichnis gepostet, das ich als Referenz verwendet habe:

verwandte Informationen