Was ist der einfachste Weg, um eine benutzerlokale Installation eines Python-Pakets durchzuführen?

32

Ich möchte nicht mit virtualenv für eine lokale Python-Installation umgehen, sondern nur ein paar Pakete lokal installieren, ohne die PYTHONPATHUmgebungsvariable zu bearbeiten. Wie mache ich das?

Aron Ahmadia
quelle
Sie sagen "Deal with", als ob Virtualenv ein Ärger wäre. Ich habe das genaue Gegenteil festgestellt. (Vielleicht möchten Sie --system-site-packages?)
Andreas Klöckner
es war hypothetisch gestellt :) virtualenv ist fantastisch, aber es passt nicht zu jedem Anwendungsfall.
Aron Ahmadia

Antworten:

48

Python (ab 2.6 und 3.0 ) sucht jetzt im ~ / .local-Verzeichnis nach lokalen Installationen, für deren Installation keine Administratorrechte erforderlich sind. Sie müssen also nur Ihr Installationsprogramm auf dieses Verzeichnis verweisen.

Wenn Sie das Paket bereits heruntergeladen haben foound es manuell installieren möchten, geben Sie Folgendes ein:

cd path/to/foo
python setup.py install --user

Wenn Sie easy_install verwenden und möchten, dass das Paket heruntergeladen und installiert wird:

easy_install --prefix=$HOME/.local/ foo

Update von RafiK

pip install --user foo

Die folgende Antwort dient historischen Zwecken: Wenn Sie pip zum Herunterladen und Installieren verwenden, ist dies ein wenig aufwändiger:

pip install --install-option="--prefix=$HOME/.local" foo
Aron Ahmadia
quelle
3
update: pip unterstützt jetzt ein --user-Flag: pip install --user SomePackage (Link zum Handbuch) Damit sollte auch auf verschiedenen Betriebssystemen alles von
vornherein funktionieren
5

Obwohl ich Python als Sprache mag, ist das Verteilen von Python-Paketen ein Chaos. Ich finde immer Leute, die nicht mit Python vertraut sind und damit zu kämpfen haben.

Neben der von Aron beschriebenen benutzer-lokalen Installation (mit --user oder --prefix) ist EasyBuild ( http://hpcugent.github.com/easybuild/ ) eine weitere Option . Nicht nur für Python-Pakete, sondern für jedes (wissenschaftliche) Softwarepaket. Sobald EasyBuild dies unterstützt, ist das Erstellen und Installieren eines Softwarepakets im Grunde genommen ein einziger Befehl.

Eine Liste der derzeit unterstützten Softwarepakete finden Sie unter https://github.com/hpcugent/easybuild/wiki/List-of-supported-software-packages .

Haftungsausschluss: Ich bin ein Entwickler von EasyBuild.

Kenneth Hoste
quelle
2

@Aron: Stellen Sie sicher, dass Sie der Umgebungsvariablen $ PYTHONPATH den Pfad für die lokalen Site-Pakete hinzufügen

corion
quelle
Es wird ab Python 2.6 und Python 3.0 automatisch in den Site-Pfad aufgenommen :)
Aron Ahmadia
@AronAhmadia nicht, wenn Sie die --prefixOption verwenden.
Jens Timmerman
@JensTimmerman - Im Site-Pfad sucht Python beim Start nach zu importierenden Modulen, wann immer Sie Python ausführen. Die Präfix-Option gibt an, wo ein bestimmtes Paket installiert werden soll, wenn Sie ein Python-Paket installieren. Zwei völlig getrennte Begriffe.
Aron Ahmadia
@AronAhmadia Ja, mein Punkt ist, dass Sie, wenn Sie easy_install --prefix = / tmp verwenden, "/tmp/lib/pythonx.x/site-packages" zu Ihrer PYTHONPATH-Variablen hinzufügen müssen, sonst wird sie von Python nicht erfasst.
Jens Timmerman
@AronAhmadia pastebin.com/6FCTetCc
Jens Timmerman