Ich bin etwas verwirrt über die Fälle, in denen die obigen Befehle beim Herunterladen von Python-Paketen verwendet werden müssen. Ich habe versucht, ein Paket mit dem Namen pyudev gemäß einer Antwort auf diese Frage herunterzuladen . Ich habe diesen Befehl ausgeführt:
sudo pip install python-pyudev
erhielt aber die folgende Nachricht:
Downloading/unpacking python-pyudev
Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log
Allerdings hat Folgendes gut funktioniert:
sudo apt-get install python-pyudev
Wann apt-get
sollen Pakete installiert werden und wann python-pip
?
apt
software-installation
python
pip
Vineet Kaushik
quelle
quelle
pip
wird nur zum Installieren von Python-Paketen verwendet, aberapt-get
zum Installieren aller beliebigen Pakete.Antworten:
PyPI ist das Python Package Index - Repository von Python-Modulen.
pip
wird verwendet, um Pakete direkt von PyPI herunterzuladen und zu installieren. PyPI wird von Python Software Foundation gehostet . Es ist ein spezialisierter Paketmanager, der sich nur mit Python-Paketen befasst.apt-get
wird zum Herunterladen und Installieren von Paketen aus Ubuntu-Repositorys verwendet, die von Canonical gehostet werden.Einige der Unterschiede zwischen der Installation von Python-Paketen von
apt-get
undpip
sind wie folgt:Canonical bietet nur Pakete für ausgewählte Python-Module an. Während PyPI eine viel breitere Palette von Python-Modulen hostet. Es gibt also viele Python-Module, mit denen Sie nicht installieren können
apt-get
.Canonical hostet nur eine einzige Version eines Pakets (im Allgemeinen die neueste oder die in der jüngeren Vergangenheit veröffentlichte). Mit können
apt-get
wir uns also nicht für die Version des Python-Pakets entscheiden, die wir wollen.pip
hilft uns in dieser situation. Wir können jede Version des Pakets installieren, die zuvor auf PyPI hochgeladen wurde. Dies ist äußerst hilfreich bei Konflikten mit Abhängigkeiten.apt-get
Installiert Python-Module an einem systemweiten Ort. In unserem Projekt virtualenv können wir nicht nur Module installieren .pip
löst dieses Problem für uns. Wenn wirpip
nach dem Aktivieren von virtualenv verwenden, ist es intelligent genug, nur die Module in unserem Projekt virtualenv zu installieren. Wie bereits erwähnt, können wir in solchen Situationen virtualenv und pip verwenden, wenn eine Version eines bestimmten Python-Pakets bereits am systemweiten Speicherort installiert ist und eines unserer Projekte eine ältere Version desselben Python-Pakets erfordert die ältere Version des Python-Pakets ohne Konflikte.Wie @Radu Rădeanu wies darauf hin , in dieser Antwort , würde es in der Regel auch Unterschied in Namen von Paketen sein. Canonical bezeichnet Python 2-Pakete normalerweise als
python-<package_name>
und Python 3-Pakete alspython3-<package_name>
. Währendpip
wir im Allgemeinen nur<package_name>
für Python 2 als auch für Python3-Pakete verwenden müssen.Welches sollten Sie verwenden:
Beide
apt-get
undpip
sind ausgereifte Paketmanager, die während der Installation automatisch alle anderen Paketabhängigkeiten installieren. Sie können jeden verwenden, wie Sie möchten. Wenn Sie jedoch eine bestimmte Version von python-package installieren oder das Paket in einer virtuellen Umgebung installieren müssen oder ein Paket installieren müssen, das nur auf PyPI gehostet wird; Nurpip
so können Sie dieses Problem lösen. Wenn es Ihnen nichts ausmacht, die Pakete an einem systemweiten Ort zu installieren, spielt es keine Rolle, ob Sieapt-get
oder verwendenpip
.quelle
pip
undapt-get
simutaneously.apt-get
. Da beide unter Verwendung vonapt-get
und zupip
Konflikten führen kann, sollte der Rat immer zu verwenden ,pip
für Pakete , die von unterstütztpip
?sudo pip
ohne installiert,virtualenv
da die meisten Ihrer Projekte dieselbe Umgebung benötigten (aber umfangreicher als die, die mit einer sauberen Ubuntu-Installation bereitgestellt werden). Dann , wenn Sie ein System - Upgrade zu tun und Ubuntu entscheidet Python auf eine neue Version zu aktualisieren (wie mitzesty
zuartful
- Python 3,5-3,6), die alle Ihre pip-installierten Pakete in/usr
hinter sich gelassen undpip.get_installed_distributions()
erzeugt eine leere Liste.Wie @AvinashRaj in seinem Kommentar sagte ,
pip
wird es nur zum Installieren von Python-Paketen verwendet, aberapt-get
zum Installieren von Paketen, die in einer beliebigen Programmiersprache erstellt wurden.Ihr Hauptproblem besteht darin, in beiden Fällen den richtigen Paketnamen zu finden:
Geben Sie den richtigen Namen für das Paket an, das Sie mit
pip install
as installieren möchtenSie erhalten den richtigen Namen für das Paket, das Sie installieren möchten
apt-get install
:Zusammenfassend ist der Korrespondent von
sudo apt-get install python-pyudev
alsosudo pip install pyudev
nichtsudo pip install python-pyudev
.Nun hängt es von Ihnen ab, was Sie auswählen möchten, wenn Sie ein Python-Paket installieren möchten:
pip
oderapt-get
. In dieser Frage und Antwort erfahren Sie beispielsweise, wie Sie ein Paket mithilfe vonpip
und installierenapt-get
.quelle
Mein bevorzugter Weg ist es, immer
apt
und nur für den Fall, dass das Modul noch nicht im Debian / Ubuntu-Repository verfügbar ist, zu verwendenpip
, sondern nur im Benutzerkontext ---user
flag. Wenn Siepip
sowieso eins verwenden, müssen Sie alle Build-Abhängigkeiten aus dem Ubuntu-Repository installieren oder selbst bereitstellen, was eine mühsame Aufgabe sein kann.apt-get
Installieren Sie Binärpakete, während Siepip
sie nach dem Herunterladen erstellen. Man sollte pip nicht verwenden, um Module an Systemstandorten zu installieren. Das ist schlicht falsch. Verwenden Sie immer--user
flag, um ein Modul am Heimatort zu installieren. Richtig konfigurierter PYTHONPATH: Lassen Sie Python zuerst die Module von HOME abholen und dann die Systemmodule mit installierenapt-get
.quelle