Gibt es eine Möglichkeit, alle Python PyPI-Pakete zu finden, die mit easy_install oder pip installiert wurden? Ich meine, ausgenommen alles, was mit den Distributionstools installiert wurde / wird (in diesem Fall apt-get on Debian).
python
pip
easy-install
pypi
Jürgen A. Erhard
quelle
quelle
Antworten:
pip freeze
gibt eine Liste der installierten Pakete und ihrer Versionen aus. Außerdem können Sie diese Pakete in eine Datei schreiben, die später zum Einrichten einer neuen Umgebung verwendet werden kann.https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
quelle
pip freeze
undpip list
alles auflisten. Sie schließen die Pakete nicht aus, die nicht von installiert wurdenpip
.pip freeze
auch in Skripten zuverlässig, währendpip list
bei der Verwendung mit Pipes unerwartete Fehler auftreten.pip list -l
Oderpip list --local
ist die beste Antwort, siehe stackoverflow.com/a/43012269/491884 von @MJBAb Version 1.3 von pip können Sie jetzt verwenden
pip list
Es bietet einige nützliche Optionen, einschließlich der Möglichkeit, veraltete Pakete anzuzeigen. Hier ist die Dokumentation: https://pip.pypa.io/en/latest/reference/pip_list/
quelle
pip freeze
pip list --user
Zeigt nur vom Benutzer installierte Pakete an und schließt systemweite Pakete aus.Wenn sich jemand wundert, können Sie den Befehl 'pip show' verwenden.
Dadurch wird das Installationsverzeichnis des angegebenen Pakets aufgelistet.
quelle
Wenn sich Debian in Bezug auf das
pip install
Standardziel wie die neuesten Ubuntu-Versionen verhält , ist dies kinderleicht: Es wird/usr/local/lib/
anstelle von/usr/lib
(apt
Standardziel) installiert . Überprüfen Sie /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747Ich bin ein ArchLinux-Benutzer und als ich mit pip experimentierte, stieß ich auf dasselbe Problem. So habe ich es in Arch gelöst.
Der Schlüssel hier ist
/usr/lib/python2.7/site-packages
YMMV, das Verzeichnis, in das pip installiert wird.pacman -Qo
So Bogen pac kage Mann für den Besitz der Datei ager überprüft.No package
ist Teil der Rückgabe, die es gibt, wenn kein Paket die Datei besitzt :error: No package owns $FILENAME
. Tricky Workaround: Ich frage nach,__init__.py
weilpacman -Qo
es ein bisschen unwissend ist, wenn es um Verzeichnisse geht :(Um dies für andere Distributionen zu tun, müssen Sie herausfinden, wo Dinge
pip
installiert werden (nursudo pip install
etwas), wie der Besitz einer Datei abgefragt wird (Debian / Ubuntu-Methode istdpkg -S
) und was die Rückgabe "Kein Paket besitzt diesen Pfad" (Debian) ist / Ubuntu istno path found matching pattern
). Debian / Ubuntu-Benutzer, Vorsicht:dpkg -S
Wird fehlschlagen, wenn Sie ihm einen symbolischen Link geben. Lösen Sie es einfach zuerst mitrealpath
. So was:Fedora-Benutzer können es versuchen (danke @eddygeek):
quelle
dpkg
schreibe den Fehler in stderr, so dass ich eine Umleitung hinzufügen muss2>&1
. Und für die internationale Ausgabe hinzufügenLANG=
vorxargs dpkg -s
. undsed
ist auch ein nettes Tool;) um nur den Paketnamen des Pfades zu behalten. Also ende ich mit:find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | LANG= xargs dpkg -S 2>&1 | grep 'no path found' | sed "s/.*\/\([^\/]*\)\/__init__\.py.*/\1/"
Beginnen mit:
Alle Pakete auflisten. Wenn Sie das gewünschte Paket gefunden haben, verwenden Sie:
Dies zeigt Ihnen Details zu diesem Paket, einschließlich seines Ordners. Sie können den ersten Teil überspringen, wenn Sie den Paketnamen bereits kennen
Klicken Sie hier für weitere Informationen zur Pip-Show und hier für weitere Informationen zur Pip-Liste.
Beispiel:
quelle
pip.get_installed_distributions()
gibt eine Liste der installierten Paketequelle
Das Folgende ist etwas langsam, aber es gibt eine schön formatierte Liste von Paketen,
pip
die bekannt sind. Das heißt, nicht alle wurden "by" pip installiert, aber alle sollten per pip aufgerüstet werden können.Der Grund dafür ist, dass es den Inhalt des gesamten Pypi-Repo auflistet. Ich habe ein Ticket eingereicht, das vorschlägt
pip list
, ähnliche Funktionen bereitzustellen, jedoch effizienter.Beispielausgabe: (Die Suche wurde für alle auf eine Teilmenge anstelle von '.' Beschränkt.)
quelle
Hinzufügen zu @Paul Woolcocks Antwort,
erstellt eine Anforderungsdatei mit allen installierten Paketen zusammen mit den installierten Versionsnummern in der aktiven Umgebung am aktuellen Speicherort. Laufen
installiert die in der Anforderungsdatei angegebenen Pakete.
quelle
Neuere Versionen von pip können über
pip list -l
oderpip freeze -l
(--list
) tun, was das OP will .Auf Debian (zumindest) macht die Manpage dies nicht klar, und ich habe es nur entdeckt - unter der Annahme, dass das Feature existieren muss - mit
pip list --help
.Es gibt aktuelle Kommentare, die darauf hinweisen, dass diese Funktion weder in der Dokumentation noch in den vorhandenen Antworten offensichtlich ist (obwohl dies von einigen angedeutet wird), daher dachte ich, ich sollte etwas posten. Ich hätte es vorgezogen, dies als Kommentar zu tun, aber ich habe nicht die Reputationspunkte.
quelle
pip freeze --local
8 Jahren hatten.pip list --local
ist auch verfügbar ... aber beachten Sie, dass es bei der OP-Frage nicht um virtuelle Umgebungen (die--local
unterstützt) geht, sondern darum, Distributionspakete vonsudo pip install
Paketen zu unterscheiden.Beachten Sie, dass bei mehreren auf Ihrem Computer installierten Python-Versionen möglicherweise einige Versionen von pip zugeordnet sind.
Abhängig von Ihren Assoziationen müssen Sie möglicherweise sehr vorsichtig sein, welchen Pip-Befehl Sie verwenden:
Arbeitete für mich, wo ich Python3.4 ausführe. Einfach mit hat
pip list
den Fehler zurückgegebenThe program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip
.quelle
Wie @almenon hervorhob, funktioniert dies nicht mehr und es ist nicht die unterstützte Methode, um Paketinformationen in Ihrem Code abzurufen. Folgendes löst eine Ausnahme aus:
Um dies zu erreichen, können Sie importieren
pkg_resources
. Hier ist ein Beispiel:Ich bin dran
v3.6.5
quelle
Hier ist der Einzeiler für Fedora oder andere RPM-Distributionen (basierend auf @ barraponto-Tipps):
Fügen Sie dies an den vorherigen Befehl an, um eine sauberere Ausgabe zu erhalten:
quelle
Holen Sie sich alle Datei- / Ordnernamen in
site-packages/
(unddist-packages/
falls vorhanden) und entfernen Sie mit Ihrem Paketmanager diejenigen, die über das Paket installiert wurden.quelle
pip freeze listet alle installierten Pakete auf, auch wenn dies nicht über pip / easy_install erfolgt. Auf CentOs / Redhat wird ein über rpm installiertes Paket gefunden.
quelle
Wenn Sie die Anaconda- Python-Distribution verwenden, können Sie mit dem
conda list
Befehl sehen, was mit welcher Methode installiert wurde:So greifen Sie auf die von
pip
(einschließlich möglicherweisepip
selbst) installierten Einträge zu :Natürlich möchten Sie wahrscheinlich nur die erste Spalte auswählen, mit der Sie arbeiten können (außer
pip
bei Bedarf):Schließlich können Sie diese Werte abrufen und alle mithilfe der folgenden Schritte deinstallieren:
Beachten Sie die Verwendung des
-y
Flags, umpip uninstall
zu vermeiden, dass zum Löschen eine Bestätigung gegeben werden muss.quelle
Für diejenigen, die kein Pip installiert haben, habe ich dieses schnelle Skript auf Github gefunden (funktioniert mit Python 2.7.13):
quelle
Pip-Liste [Optionen] Die vollständige Referenz finden Sie hier
quelle
Zumindest für Ubuntu (vielleicht auch andere) funktioniert dies (inspiriert von einem vorherigen Beitrag in diesem Thread):
quelle