Empfohlene Methode zum Installieren von Python-Paketen auf Arch

37

Wie werden Python-Pakete auf Arch empfohlen? Suchen Sie sie auf dem AUR und installieren Sie sie von dort aus (oder erstellen Sie eine PKGBUILDDatei, um selbst ein Paket zu erstellen ) oder verwenden Sie pip?

Ich begann mit der Installation von Sachen von Pacman und der AUR und weiß nicht, ob es sinnvoll wäre, mit pipPaketen zu mischen .

Nils Werner
quelle

Antworten:

34

Wenn Sie die Python-Pakete nicht für alle Benutzer benötigen, können Sie sie wie folgt bei Ihnen zu Hause installieren:

pip install --user packagename

Die Installation bei Ihnen zu Hause führt nicht zu Konflikten mit dem Paketmanager.

Standardmäßig pip install --userwird in Ihrem "Benutzersite" -Verzeichnis installiert. In der Regel ist , dass so etwas wie: /home/lesmana/.local/lib/python3.6/site-packages.

Mit dem folgenden Befehl wird unter anderem der Speicherort Ihrer "Benutzersite" gedruckt:

python -m site

So passen Sie den Installationsort an:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

das installiert alles unter $HOME/some/dir

zu rennen:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

Weitere Informationen finden Sie im Pip-Handbuch .


Wenn Sie das Python-Paket für alle Benutzer verwenden möchten, sollten Sie es am besten installieren /opt. Zum Beispiel so:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(Beachten Sie die fehlenden --user)

und laufen wie oben:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Hintergrunderklärung: /optWird allgemein von GNU / Linux-Distributionen als das Verzeichnis anerkannt, in dem der lokale Benutzer oder Systemadministrator seine eigenen Sachen installieren kann. mit anderen Worten: Der Paketmanager von Distributionen berührt in der Regel nicht /opt. Dies ist im Filesystem Hierarchy Standard mehr oder weniger standardisiert

Aus Komfortgründen für die Benutzer möchten Sie dennoch ein Wrapper-Skript schreiben und in /binoder ablegen /usr/bin. Dies birgt immer noch das Risiko einer Kollision mit dem Distributionspaket-Manager, es handelt sich jedoch nur um eine einzige Wrapper-Skriptdatei. Der Schaden ist also minimal. Sie können dem Wrapper-Skript einen ähnlichen Namen geben local-foooder custom-foodas Risiko einer Kollision mit dem Verteilungspaket-Manager weiter minimieren.

Alternativ können Sie ändern PATHschließen /opt/binIhre Wrapper - Skript gibt und zu platzieren. Dies erfordert jedoch wiederum, dass Sie eine (oder einige) Systemdateien ändern, in denen PATHdefiniert ist, die wiederum vom Verteilungspaket-Manager überschrieben werden können.

Kurz gesagt: Wenn Sie für alle Benutzer installieren möchten, tun Sie dies in /opt. Wo Sie das Wrapper-Skript aus Komfortgründen platzieren, ist ein Urteilsspruch.

Weitere Informationen zum /optDateisystem-Hierarchie-Standard:

lesmana
quelle
IMHO sollte dies zusammen mit einem Zeiger auf das Einrichten von virtuellen Envs die akzeptierte Antwort sein.
Ttsiodras
1
Pfui. Neu pythonund ich wünschte, ich hätte das gewusst, bevor ich sudioDinge anpipste. Danke dafür.
Hendy
Was passiert , wenn Sie tun , für alle Benutzer , die Python - Pakete benötigen?
Mehrdad
@Mehrdad aktualisierte Antwort
Lesmana
@lesmana: Danke! Aber sind Sie sicher, dass dies der empfohlene Weg ist? Dies ist das erste Mal, dass ich jemanden vorschlagen höre, / opt für Python zu verwenden ...
Mehrdad
9

In der Regel wird in einer Distribution empfohlen, den Paket-Manager der Distribution zu verwenden. Sie können natürlich Dinge mit pip (oder in der Perl-Welt mit cpan) installieren oder Dinge selbst kompilieren und installieren. Wenn Sie dies tun, kennt der Paketmanager der Distribution diese jedoch nicht und kann keine Abhängigkeiten oder Aktualisierungen für sie verwalten.

Die Verwendung von pip entspricht in etwa dem Kompilieren und Installieren eines eigenen Pakets. Tun Sie es, wenn Sie müssen, aber bevorzugen Sie den Paket-Manager der Distribution.

Falcon Momot
quelle
2
Sie sollten unbedingt vermeiden pip(zumindest global über sudooder als root) - Ich habe gerade einige site-package/...bereits vorhandene Fehler erhalten, als pacmanversucht wurde, einige Abhängigkeiten zu installieren
Tobias Kienzler
Ich habe auch solche Fehler bekommen. Ich hatte alle Pip3-Pakete aktualisiert und dann weigerte sich Pacman aufgrund von Konflikten, ein System-Upgrade durchzuführen. Ich musste dieses Paket sowohl über pip3 als auch über pacman deinstallieren, dann das System-Upgrade durchführen und schließlich das Paket wieder installieren (natürlich mit pacman).
Al.G.
8

Der richtige Weg für ArchLinux

Der richtige Weg, um PYTHON-Pakete in ArchLinux zu installieren, ist die Verwendung von PACMAN! Um Pakete auf Python3 zu installieren, müssen Sie verwenden

sudo pacman -S python-'package'

Wenn Sie Pakete von Python2 installieren möchten, müssen Sie verwenden

sudo pacman -S python2-'package'

Die meisten Python-Pakete befinden sich in den ArchLinux-Repositorys und die Pakete, die sich nicht in AUR befinden (ArchLinux User Repositorys). Für diese Pakete müssen Sie die PKGBUILD-Datei herunterladen und kompilieren. Danach müssen Sie PACMAN verwenden, um die Installation abzuschließen

makepkg -s
sudo pacman -U 'compiled-package'

Der zweite richtige Weg für ArchLinux

Wenn das Paket nicht in der AUR enthalten ist oder PKGBUILD nicht funktioniert, können Sie es mit PIP in Python3 installieren

sudo pip install 'python-package'

oder Python2

sudo pip2 install 'python-package'

Sie könnten virtualenvoder sogar eine Chance gebenconda

In Arch können Sie auch VirtualEnvironments verwenden. Dies kann die Portabilität Ihres Codes verbessern und auch alte Pakete verwalten. Installieren Sie es mit

sudo pacman -S python-virtualenv

und probier das aus

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

Wenn Sie diese Umgebung erstellen yourenv, werden Sie so einrichten pip, dass Pakete nur in dieser Umgebung und nicht auf dem gesamten System installiert werden.

Diese anderen Links können hilfreich sein, wenn Sie mehr über das Verwalten von Paketen unter Linux erfahren möchten condaoder virtualenv:

Installieren von Python-Paketen von einem Jupyter-Notebook

Code Python unter ArchLinux

Wenn Sie diese Regeln befolgen, wird Ihr ArchLinux nicht beschädigt und es treten keine Abhängigkeitsprobleme zwischen PACMAN und PIP auf.

Hoffe es ist nützlich!

Emanuel Fontelles
quelle
5

Für bestimmte Pakete (solche, die ich höchstwahrscheinlich nicht hacken möchte) erstelle ich mein eigenes Paket folgendermaßen:

https://github.com/bluepeppers/pip2arch

dann baue und installiere das hergestellte PKGBUILD.

Ich hinterlasse virtualenvs für Pakete, die ich ändern oder hacken möchte.

rmorgans
quelle
Es gibt auch github.com/wenLiangcan/pip2pkgbuild
Tobias Kienzler
1

Überprüfen Sie zusätzlich zu den anderen Antworten hier das python-virtualenvPaket. Es kann sehr nützlich sein, wenn Sie in mehreren Projekten mit unterschiedlichen Abhängigkeiten mit nicht übereinstimmenden Versionsnummern entwickeln.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

Beachten Sie auch, dass es zwei Varianten von pip und virtualenv gibt. Eine für Python 2 und eine für Python 3. Wenn die Installation mit einem Syntaxfehler fehlschlägt, versuchen Sie es möglicherweise mit der falschen Version.

Bobbaluba
quelle