Aus pip install --help
:
--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
Windows. (See the Python documentation for site.USER_BASE for full details.)
Die Dokumentation zu site.USER_BASE ist ein furchterregendes Wurmloch mit interessanten * NIX-Inhalten, die ich nicht verstehe.
Was ist der Zweck von --user
in einfachem Englisch? Warum ist es wichtig, das Paket auf ~/.local/
zu installieren? Warum nicht einfach irgendwo in meinem $ PATH eine ausführbare Datei ablegen?
pip installiert standardmäßig Python Pakete in einem Systemverzeichnis (z. B. /usr/local/lib/python3.4
). Dies erfordert Root-Zugriff.
--user
erstellt stattdessen Pip-Installationspakete in Ihrem Ausgangsverzeichnis, für die keine besonderen Berechtigungen erforderlich sind.
_--user
_ wird in site.USER_SITE
installiert.
In meinem Fall war es _/Users/.../Library/Python/2.7/bin
_. Also habe ich das zu meinem PATH (in _~/.bash_profile
_ -Datei) hinzugefügt:
_export PATH=$PATH:/Users/.../Library/Python/2.7/bin
_
In anderen Antworten wird site.USER_SITE
als Speicherort für Python -Pakete angegeben. Wenn Sie nach Binärdateien suchen, gehen diese in {site.USER_BASE}/bin
.
Wenn Sie dieses Verzeichnis zum Suchpfad Ihrer Shell hinzufügen möchten, verwenden Sie:
export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"
Unter einem MAC-Betriebssystem wird das Flag --user
verwendet, um sicherzustellen, dass die vom Betriebssystem verwendeten Bibliotheken nicht beschädigt werden. EinkonservativerAnsatz für viele MAC OS-Benutzer besteht darin, die Installation oder Aktualisierung von pip mit einem Befehl zu vermeiden, der Sudo
erfordert. Dies beinhaltet also die Installation auf /usr/local/bin
...
Siehe: Installieren von python für Neovim ( https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim )
Ich bin nichtalleklar, warum die Installation in /usr/local/bin
ein Risiko für einen MAC darstellt, da das System nur auf python basiert. Binärdateien in /Library/Frameworks/
und /usr/bin
. Ich vermute, es liegt daran, dass die Installation in /usr/local/bin
, wie oben erwähnt, Sudo
erfordert, was die Tür zu einem kostspieligen Fehler mit den Systembibliotheken öffnet. Daher ist die Installation in ~/.local/bin
ein sicherer Weg, um dieses Risiko zu vermeiden.
Referenz: Verwenden von python auf einem Mac ( https://docs.python.org/2/using/mac.html )
In dem Maße, in dem es von Vorteil ist, Pakete in den /usr/local/bin
zu installieren, frage ich mich, ob es sinnvoll ist, den Eigentümer des Verzeichnisses von root
in user
zu ändern.Dies würde die Verwendung von Sudo
vermeiden und gleichzeitig den Schutz vor systemabhängigen Änderungen gewährleisten.* Ist dies eine Sicherheitsvorgabe, ein Relikt der Häufigkeit von Unix-Systemen? in der Vergangenheit verwendet (als Server)? Oder zumindest ein guter Weg für MAC-Benutzer, die keinen Server hosten?
* Hinweis: Die System Integrity Protection (SIP) -Funktion von Mac scheint den Benutzer auch vor Änderungen an den systemabhängigen Bibliotheken zu schützen.
- E
Der beste Weg ist, virtualenv
zu installieren und nicht die Verwirrung --user
zu verursachen. Sie erhalten mehr Flexibilität und müssen sich nicht mehr darum kümmern, die verschiedenen python -Versionen und -Projekte jedes Mal zu löschen, wenn Sie ein Paket installieren.
Nur eine Warnung:
Laut dieser Ausgabe ist --user
derzeit in pip
einer virtuellen Umgebung nicht gültig, da ein Benutzerstandort für eine virtuelle Umgebung nicht wirklich sinnvoll ist.
Verwenden Sie daher pip install --user some_pkg
nicht in einer virtuellen Umgebung , da sonst die pip
der virtuellen Umgebung verwechselt wird. Siehe diese Antwort für weitere Details.