Wie liste ich die Dateien auf, die mit einem Python-Paket verknüpft sind, das mit pip oder easy_install installiert wurde?

67

Ich habe ein Python-Paket mit pip installiert, das easy_install ersetzt. Wie erhalte ich eine Liste der installierten Dateien, die mit diesem Paket verknüpft sind?

Grundsätzlich suche ich das Python-Paket-Äquivalent von

dpkg -L

oder

rpm -ql
Lorin Hochstein
quelle

Antworten:

89

Sie können dies mit dem folgenden Befehl tun:

pip show -f <package>
Bunyk
quelle
Nicht für mich arbeiten, pip: error: No command by the name pip show. (Mit Pip 1.1)
Zitrax
@ Zitrax Naja, momentan verwende ich pip 1.4.1 und es funktioniert, vielleicht solltest du pip upgraden.
Bunyk
Ja, hier ist die Antwort darauf: stackoverflow.com/a/14060138/816449 Es funktioniert in 1.2.1.post1.
Bunyk
1
Es scheint, dass dies nicht für jedes Paket funktioniert. ZB pip show -f nbconvertgibt Files: Cannot locate installed-files.txt.
Alex Coventry
Es funktioniert auch nicht für Pakete, die mit installiert wurden python setup.py develop.
Akaihola
4

Ich verwende virtualenv mit pip. Hier sind die Schritte, denen ich folge. Angenommen, ich arbeite in der dave_venvvirtuellen Umgebung.

$ cat ~/.bashrc

export WORKON_HOME=/usr/local/virtualenvs

$ cd /usr/local/virtualenvs/dave_venv/lib/python2.6/site-packages
$ ls # This should show <your_package>.
$ cd <your_package>
$ ls # now you're looking at your package's files.
Dave Aaron Smith
quelle
1
Funktioniert in den meisten Fällen, aber nicht, wenn das Paket Befehlszeilenskripte installiert, die in usr / local / bin enden würden. Einige Pakete können auch mehrere Module installieren.
hwjp 31.10.12
@hwjp Kennst du die Antwort auf: Finde heraus, welches Python-Paket eine Binärdatei besitzt ?
Tom Hale
2

Zwei Jahre später haben die meisten Pip-Instanzen gezeigt, dass jedoch nicht alle Pakete das installierte Programm files.txt haben, das vom Unterbefehl gelesen werden kann.

Eine Problemumgehung besteht darin, die Python-Shell zu starten und dies zu tun:

>>> import eventlet
>>> eventlet.__path__
    ['/usr/lib/python2.7/dist-packages/eventlet']

Wobei "eventlet" das Paket ist, das ich mit pip installiert habe.

Coyot
quelle