Wie installiere ich Python-Pakete am besten?

41

Was ist der beste Weg, um Python-Pakete in Ubuntu 11 zu installieren? Ich bin vor kurzem auf Ubuntu umgestiegen und möchte Best Practices lernen.

Für den Kontext möchte ich das Tweeststream-Paket installieren, es wurde jedoch nicht in meinem Synaptic-Paket-Manager angezeigt. Auch ich bin sehr neu in der Programmierung, aber ich kann in der Regel zusammen mit Codebeispielen folgen.

Btibert3
quelle

Antworten:

30

Ich denke, der beste Weg für Sie wäre, ein Python-Paketierungssystem wie "python-pip" zu installieren. Sie können es mit Synaptic oder Ubuntu Software Center installieren.

Mit Pip können Sie Python-Pakete ganz einfach installieren und deinstallieren pip install package. In deinem Fall wäre es ungefähr so ​​vom Terminal:

sudo pip install tweeststream
Zetah
quelle
3
Dies ist in Ordnung für einfache Pakete, aber nicht so gut für größere Pakete, zB numpy
hayd
@ Hayd: Warum? Steht das im Zusammenhang mit askubuntu.com/questions/595366/…
naught101
2
@ naught101 Ich denke, ich meinte wahrscheinlich scipy, nicht sicher, ob es verwandt ist ... sieht aus, als wäre pip zu spät im Python-Pfad. Ich empfehle dringend die Verwendung von Anaconda / Conda, es ist Pip IMO weit überlegen.
Hayd
2
IMHO mit sudo pip <anything>sollte sehr vorsichtig verwendet werden. Da tweetstreames sich nicht um Ubuntu Software Center handelt , empfehle ich die Verwendung eines virtuellen Env . tweetstream dassetup.py erfordert , anyjsonwelche ist ein Ubuntu - Paket . Wenn Sie tweetstream in a nicht installieren, virtualenvkann dies dazu führen, dass andere Ubuntu-Apps, die darauf angewiesen sind anyjson, fehlschlagen. Problemlösung hart.
Mark Mikofski
9
Wiederholen: Nicht sudo pipauf Ubuntu verwenden. @MarkMikofski: du brauchst kein virtualenv (es sei denn du willst es aus einem bestimmten Grund). python -mpip install --user package-namekann das Paket packafe-namefür den aktuellen Benutzer installieren . Wenn es komplexe (große C-Erweiterungen) Abhängigkeiten gibt; Sie können sie mithilfe von installieren apt-get, um die Installation von Build-Abhängigkeiten zu vermeiden, sofern dies nicht erforderlich ist.
jfs
37

Aktualisiert: 11.05.2019: In diesem Beitrag werden hauptsächlich virtualenv, laut dem Python-Dokument zur Modulinstallation , Python 3.5 als Alternative für Python-Versionen vor 3.4 venvempfohlen virtualenv.

Update: 2018.08.17: seit Conda-4.4.0 Verwendung condazu activateanaconda auf allen Plattformen

aktualisiert: 2017-03-27: PEP 513 - manylinuxBinärdateien für PyPI

aktualisiert: 19.08.2016: Continuum Anaconda Option

Dies ist etwas ein Duplikat von easy_install / pip oder apt-get .

Verwenden Sie für globale Python-Pakete entweder Ubuntu Software Center, apt, apt-get oder synaptic

Ubuntu verwendet Python für viele wichtige Funktionen, daher kann eine Störung von Python Ihr Betriebssystem beschädigen. Dies ist der Hauptgrund , warum ich nie verwenden pipauf meinem Ubuntu - System, sondern verwende ich entweder Ubuntu Software Center, synaptic , apt-getoder die neueren nur apt, die alle standardmäßig Pakete aus der installieren Ubuntu - Repository . Diese Pakete werden getestet, in der Regel vorkompiliert, damit sie schneller installiert und letztendlich für Ubuntu entwickelt werden können. Außerdem werden alle erforderlichen Abhängigkeiten installiert und ein Protokoll der Installationen wird geführt, damit ein Rollback durchgeführt werden kann. Ich denke, die meisten Pakete haben entsprechende Launchpad- Repos, damit Sie Probleme einreichen können.

Ein weiterer Grund für die Verwendung von Ubuntu-Paketen ist, dass diese Python-Pakete manchmal unterschiedliche Namen haben, je nachdem, von wo Sie sie heruntergeladen haben. Python-chardet ist ein Beispiel für ein Paket, das einmal unter PyPI und einmal im Ubuntu-Repository benannt wurde. Wenn Sie also so etwas tun, pip install requestswird Ihnen nicht klar, dass chardet bereits auf Ihrem System installiert ist, da die Ubuntu-Version einen anderen Namen hat, und Sie werden folglich eine neue Version installieren, die Ihr System in unwesentlicher Weise beschädigt. Warum sollten Sie das trotzdem tun?

Im Allgemeinen möchten Sie nur vertrauenswürdigen Code in Ihrem Betriebssystem installieren. So sollten Sie sein nervös über das Tippen $ sudo pip <anything-could-be-very-bad>.

Schließlich sind einige Dinge mit Ubuntu-Paketen einfacher zu installieren. Wenn Sie beispielsweise versuchen pip install numpy, numpy & scipy zu installieren, es sei denn, Sie haben bereits gfortran, atlas-dev, blas-dev und lapack-dev installiert, wird ein endloser Strom von Kompilierungsfehlern angezeigt. Die Installation von numpy & scipy über das Ubuntu-Repository ist jedoch so einfach wie ...

$ sudo apt-get install python-numpy python-scipy

Sie haben Glück, denn Sie verwenden Ubuntu, eine der am häufigsten unterstützten und oft aktualisierten Distributionen. Höchstwahrscheinlich befindet sich jedes benötigte Python-Paket im Ubuntu-Repository und ist wahrscheinlich bereits auf Ihrem Computer installiert. Und alle 6 Monate wird ein neuer Paketzyklus mit der neuesten Ubuntu-Distribution veröffentlicht.

Wenn Sie zu 100% sicher sind, dass das Paket Ihr Ubuntu-System in keiner Weise beeinträchtigt, können Sie es mit pip installieren, und Ubuntu ist gut genug, um diese Pakete von den Distributionspaketen zu trennen, indem Sie die Distributionspakete in einem Ordner namens ablegen dist-packages/. Das Ubuntu-Repository enthält sowohl Pip-, Virtualenv- als auch Setuptools. Ich nehme jedoch Wojciechs Vorschlag an, virtualenv zu verwenden.

Verwenden Sie für persönliche Python-Projekte Pip und Wheel in einer virtuellen Umgebung

Wenn Sie die neueste Version benötigen oder das Modul nicht im Ubuntu-Repository vorhanden ist, starten Sie eine virtuelle Umgebung und installieren Sie das Paket mit pip. Obwohl pip und setuptools zusammengeführt wurden, wird IMO pip der einfachen Installation oder der Deinstallation vorgezogen, da immer gewartet wird, bis das Paket vollständig heruntergeladen und erstellt ist, bevor es in Ihr Dateisystem kopiert wird, und ein Upgrade oder eine Deinstallation zum Kinderspiel wird. In vielerlei Hinsicht ähnelt es apt-get, da es im Allgemeinen gut mit Abhängigkeiten umgeht. Jedoch Sie werden möglicherweise einige Abhängigkeiten selbst behandeln müssen, aber da PEP 513 angenommen gibt es jetzt manylinuxBinärdateien im Python Package Index (PyPI) für populäre Linux - Distributionen wie Ubuntu und Fedora .Stellen Sie, wie oben für NumPy und SciPy erwähnt, sicher, dass Sie gfortran, atlas-dev, blas-dev und lapack-dev aus dem Ubuntu-Repository installiert haben. Beispielsweise werden NumPy und SciPy jetzt für Ubuntu standardmäßig mit OpenBLAS als manylinuxRäder verteilt von ATLAS. Sie können sie weiterhin mit den pip-Optionen oder aus dem Quellcode erstellen .--no-use-wheel--no-binary <format control>

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

sudoersInformationen zum Installieren aktualisierter Versionen von pip, setuptools, virtualenv oder wheels in Ihrem persönlichen Profil mithilfe des --userInstallationsschemas mit pip finden Sie weiter unten im Abschnitt "Sie sind nicht dabei " . Sie können dies verwenden, um pip für Ihren persönlichen Gebrauch zu aktualisieren, wie JF Sebastian in seinem Kommentar zu einer anderen Antwort angegeben hat . HINWEIS: Das -mist wirklich nur unter MS Windows nötig, wenn pip aktualisiert wird .

python -m pip install --user pip setuptools wheel virtualenv

Neuere Versionen von pip speichern Räder automatisch im Cache, daher ist das Folgende nur für ältere Versionen von pip nützlich. Da Sie diese möglicherweise mehrmals installieren, sollten Sie in Betracht ziehen, ein Rad mit einem Rohr zu verwenden, um ein Steuerhaus zu erstellen. Wheel ist bereits invirtualenv Version 13.0.0 enthalten. Wenn Ihre Version von virtualenvalso zu alt ist, müssen Sie möglicherweise zuerst Wheel installieren.

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

Dadurch werden Binärraddateien erstellt <cwd>/wheelhouse, -din denen ein anderes Verzeichnis angegeben wird. Wenn Sie nun eine andere virtuelle Umgebung starten und dieselben Pakete benötigen, die Sie bereits erstellt haben, können Sie diese von Ihrem Steuerhaus aus installierenpip install --find-links=<fullpath>/wheelhouse

Lesen Sie Installieren von Python-Modulen in der Python-Dokumentation und Installieren von Paketen auf der Hauptseite von Python Package Index . Auch Pip , Venv , Virtualenv und Wheel .

Wenn Sie nicht dabei sind sudoersund virtualenvnicht installiert sind.

Eine weitere Option für die Verwendung einer virtuellen Umgebung, oder wenn Sie eine Linux-Freigabe ohne Root-Berechtigungen verwenden, können Sie Pakete mit dem --useroder --home=<wherever-you-want>Python-Installationsschema mit Python distutilsso installieren, site.USERBASEwie Sie möchten. Neuere Versionen von pip haben ebenfalls eine --userOption. Nicht verwenden sudo!

pip install --user virtualenv

Wenn Ihre Linux-Version von pip zu alt ist, können Sie Setup-Optionen übergeben. Dies --install-optionist nützlich, um benutzerdefinierte Optionen setup.pyfür einige Pakete, die Erweiterungen erstellen, an einige Skripte zu übergeben, z PREFIX. Möglicherweise müssen Sie nur die Distribution extrahieren und verwenden distutils, um das Paket nach althergebrachter Methode durch Eingabe zu installieren python setup install [options]. Das Lesen einiger Installationsdokumentationen und der distutilsDokumentation kann hilfreich sein.

Python ist schön genug , um hinzuzufügen , site.USERBASEum Ihr PYTHONPATHvor allem anderen, so dass nur die Änderungen werden Sie bewirken. Ein beliebter Ort für --homeist ~/.local. Die genaue Dateistruktur und die Position Ihrer Site-Pakete finden Sie im Installationshandbuch für das Python- Modul . Hinweis : Wenn Sie die Verwendung --homeInstallationsschema dann können Sie es zum hinzufügen müssen PYTHONPATHUmgebungsvariable exportin Ihrem .bashrc, .bash_profileoder in der Shell für die lokalisierte Pakete in Python zur Verfügung stehen.

Verwenden Sie Continuum Anaconda Python für Mathematik, Naturwissenschaften, Daten oder persönliche Projekte

Wenn Sie Python für Mathematik, Naturwissenschaften oder Daten verwenden, ist IMO eine wirklich gute Option: die Anaconda-Python-Distribution oder die grundlegendere Miniconda-Distribution von Anaconda, Inc. (früher als Continuum Analytics bekannt ) . Obwohl jeder von Anaconda für persönliche Projekte profitieren kann, enthält die Standardinstallation über 500 Mathematik- und Wissenschaftspakete wie NumPy, SciPy, Pandas und Matplotlib , während Miniconda nur Anaconda-Python und den Conda-Umgebungsmanager installiert. Anaconda wird nur in Ihr persönliches Profil installiert, dh: /home/<user>/ und ändert Ihren ~/.bashrcoder ~/.bash_profileden Pfad von Anaconda vor Ihren persönlichen $PATH Sourcing-Empfehlungenconda.shin Ihrem ~/.bashrcdenen können Sie verwenden conda activate <env|default is base>Anakonda starten - dies wirkt sich nur auf Sie - Ihrem Systempfad unverändert ist . Daher haben Sie nicht benötigen Root - Zugriff oder sudoAnaconda zu verwenden! Wenn Sie Anaconda-Python, Miniconda oder Conda bereits zu Ihrem persönlichen Pfad hinzugefügt haben, sollten Sie den PATHExport von Ihrem entfernen ~/.bashrcund auf die neue Empfehlung aktualisieren , damit Ihr System-Python wieder der erste ist.

Dies ähnelt der --userOption, die ich im letzten Abschnitt erläutert habe, mit der Ausnahme, dass sie sich auf Python als Ganzes und nicht nur auf Pakete bezieht. Daher ist Anaconda völlig unabhängig von Ihrem System-Python . Es beeinträchtigt Ihr System-Python nicht und nur Sie können es verwenden oder ändern. Da eine neue Version von Python und all seinen Bibliotheken installiert wird, benötigen Sie mindestens 200 MB Speicherplatz, aber es ist sehr klug, Bibliotheken zu cachen und zu verwalten, was für einige der coolen Dinge wichtig ist, die Sie mit Anaconda tun können.

Anaconda verwaltet eine Sammlung von Python-Binärdateien und -Bibliotheken, die für Abhängigkeiten in einem Online-Repository (früher als binstar bezeichnet ) erforderlich sind , und sie hosten Benutzerpakete auch als verschiedene "Channels". Der von Anaconda verwendete Paketmanager condainstalliert standardmäßig Pakete von Anaconda, aber Sie können mit der -cOption einen anderen "Kanal" signalisieren .

Installieren von Paketen mit condawie pip:

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

Aber condakann so viel mehr tun! Ebenso können virtuelle Umgebungen erstellt und verwaltet werden virtualenv. Da Anaconda virtuelle Umgebungen erstellt, kann der pipPaketmanager verwendet werden, um Pakete von PyPI in einer Anaconda-Umgebung ohne root oder zu installieren sudo. Sie nicht verwenden , sudomit Anaconda! Warnung! Seien Sie jedoch vorsichtig, wenn Sie mischen pipund condain einer Anaconda-Umgebung, b / c, müssen Sie Paketabhängigkeiten sorgfältiger verwalten. Eine weitere Option pipin einer Conda-Umgebung ist die Verwendung des Conda-Forge-Kanals, aber auch am besten in einer frischen Conda-Umgebung mit Conda-Forge als Standardkanal. Wenn Sie als letzte Möglichkeit nur auf PyPI ein Paket finden können, ziehen Sie in Betracht, --no-depsdie verbleibenden Abhängigkeiten mithilfe von manuell zu installieren conda.

Anaconda ähnelt Ruby RVM in gewisser Weise, wenn Sie mit diesem Tool vertraut sind. Mit Anaconda condakönnen Sie auch virtuelle Umgebungen mit verschiedenen Versionen von Python erstellen . Beispiel : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seabornErstellt einen wissenschaftlichen / datenwissenschaftlichen Stapel mit Python-3.5 in einer neuen Umgebung namens py35sci. Sie können die Umgebung mit wechseln conda. Da Conda-4.4.0 ist dies nun anders zu virtualenvwelchen Zwecken source venv/bin/activate, aber vorherigen zu Conda-4.4.0 die condaBefehle das waren gleiche wie virtualenvund auch verwendet source:

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

Aber warte, es gibt noch mehr! Anaconda kann auch verschiedene Sprachen wie R für die statistische Programmierung über den Anaconda- rKanal installieren . Sie können sogar Ihren eigenen Kanal einrichten, um für conda erstellte Paketdistributionen hochzuladen . Wie bereits erwähnt, verwaltet conda-forge automatisierte Builds vieler Pakete auf PyPI im conda-forge Anaconda-Kanal .

Epilog

Es gibt viele Möglichkeiten, Ihre Python-Projekte unter Linux zu verwalten, je nach Ihren persönlichen Bedürfnissen und Zugriffsmöglichkeiten. Ich hoffe jedoch, dass Siesudo von dieser Antwort absehen, dass Sie sie so gut wie nie zur Installation von Python-Paketen benötigen . Die Verwendung von sudosollte ein Geruch für Sie sein, dass etwas nicht stimmt. Du wurdest gewarnt.

Viel Glück und viel Spaß beim Programmieren!

Mark Mikofski
quelle
Ich wünschte, ich hätte das gelesen, bevor ich die Python-Distribution meines Systems durch sudoHerumspielen zerstört hätte pip. Vielen Dank für diese Informationen.
Slhck
pip install numpysollte alle Abhängigkeiten installieren
Timo
@Timo, wie ich bereits im Update vom 27.03.2017 erwähnt habe, da PEP 513 von manylinux implementiert wurde. Auf PyPI sind NumPy-Binärdateien verfügbar, die mit OpenBLAS erstellt wurden, dh sie haben die erforderlichen Abhängigkeiten. In der Regel pip install <package>werden jedoch nur die im install_requiresAbschnitt von aufgeführten Python-Paketabhängigkeiten installiert setup.py. Zum Beispiel: Installation Jupyter nicht Haskell - Bibliothek installieren pandoc Jupyter Notebooks als LaTeX zu exportieren, etc
Mark Mikofski
Im Gegensatz dazu werden conda install <package>wahrscheinlich alle Abhängigkeiten, einschließlich C / C ++, FORTRAN usw., auch Haskell-Bibliotheken installiert, da conda nicht nur Python-Pakete wie pip verwaltet, sondern auch Umgebungen. Also , wenn Sie Anaconda oder miniconda haben dann conda install Jupyterinstalliert alles in der Rezept - meta.ymlDatei , einschließlich der pandoc Haskell - Bibliothek . Für weitere Informationen siehe PyPA
Mark Mikofski
10

Zusätzlich zu Novarchibalds Hinzufügung ist es im Allgemeinen eine gute Idee, eine virtuelle Umgebung für Ihr Python-Projekt zu erstellen und Abhängigkeiten darin zu installieren. Auf diese Weise haben Sie eine bessere Kontrolle über Abhängigkeiten und ihre Versionen. Geben Sie Folgendes ein, um eine virtuelle Umgebung einzurichten:

virtualenv --no-site-packages --distribute my_python_project

Dann aktivieren Sie es mit:

cd my_python_project
source bin/activate

Zu diesem Zeitpunkt verbleibt alles, was Sie mit pip installieren, in dieser virtuellen Umgebung. Wenn Sie etwas global installieren möchten, sollten Sie zunächst virtualenv mit folgendem Befehl beenden:

deactivate

Mehr über virtualenv erfahren Sie hier .

Voitek Zylinski
quelle
1
Alternativ: Verwenden Sie den Pip aus dem Verzeichnis virtualenv bin (hier my_python_project / bin / pip), um diese Umgebung zu verwalten, ohne sie "aktivieren" zu müssen. Dann wird - wenn Sie eines der in der Bin installierten Skripte verwenden, das angegebene virutalenv verwendet. "activate" ist nur praktisch, um "python", "easy_install" und "pip" über einen bestimmten virtuellen Ordner aufzurufen.
Jan Vlcinsky
In den Installationsdokumenten von Python heißt es, "pyvenv" zu verwenden, um für ein Projekt spezifische virtuelle Umgebungen zu erstellen. Aber dieses Virtualenv ist ein Fallback für Projekte, die eine ältere Python-Version verwenden: docs.python.org/3/installing/index.html?highlight=pip .
pbhj
2
Beachten Sie, dass die virtualenvOptionen --no-site-packagesund --distributeheutzutage veraltet sind und keine Wirkung mehr haben.
Forage
4

Zusätzlich zur Antwort von Zetah'a lautet der Befehl zum Installieren von python-pip vom Terminal aus:

sudo apt-get install python-pip
Novarchibald
quelle
1

Probieren Sie es aus Ein GUI-Framework für PIP, das mit PyQt4 entwickelt wurde

Ein mit PyQt4 entwickeltes GUI-Framework für PIP

Der Startbildschirm

Bildbeschreibung hier eingeben

Der Startbildschirm enthält Optionen, mit denen der Benutzer den Prozess auswählen kann, den er ausführen möchte.

Man kann auch die Version von Python angeben, für die die Operationen ausgeführt werden sollen.

Das Dateimenü verfügt über die Optionen "Beenden" (Tastenkürzel: Strg + Q) und "Listen aktualisieren", mit denen die Ressourcendateien mit den Paketdaten aktualisiert werden.

Der Installationsbildschirm

Bildbeschreibung hier eingeben

Der Installationsbildschirm enthält eine Suchleiste, mit der der Benutzer die gewünschten Pakete suchen und installieren kann.

Der Update-Bildschirm

Bildbeschreibung hier eingeben

Der Aktualisierungsbildschirm zeigt die Liste der Pakete an, die veraltet sind und aktualisiert werden können.

Der Deinstallations-Screem

Bildbeschreibung hier eingeben

Der Deinstallationsbildschirm zeigt die Liste der Pakete an, die auf dem System des Benutzers installiert sind und deinstalliert werden können.

Das Fortschrittsfenster

Bildbeschreibung hier eingeben

Das Fortschrittsfenster ist ein integriertes Terminal-Widget für die PIP-GUI, das die Prozesse anzeigt, die während der Ausführung von Vorgängen ausgeführt werden.

gavisic
quelle
1
Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Kevin Bowen