2015-11-02 19 views
8

Ich habe eine Datei, die vermutlich von pip installiert wurde. Wie kann ich herausfinden, welches Paket diese Datei installiert hat? Mit anderen Worten, ich suche einen Befehl ähnlich wie pacman -Qo filename, aber für Pip. Existiert es? Oder sollte ich eine Kombination aus Pip + Grep verwenden? In diesem Fall kann ich nicht alle installierten Dateien auflisten.Wie finde ich heraus, welches Pip-Paket eine Datei besitzt?

+1

Was meinst du mit "Datei"? Ein Modul? Ein Packet? – poke

+0

@poke In meinem hd habe ich eine Datei .py und ich möchte wissen, ob ich vor Jahren ein Paket installiert habe, das diese Datei in meinen Computer kopiert hat. (eigentlich ist die Datei '/ usr/bin/rst2html.py') aber meine Frage ist, wie man es im Allgemeinen macht. – DdD

Antwort

3

könnten Sie mit versuchen, für diese Datei

pip list | cut -d" " -f1 | xargs pip show -f 

suchen Dann suchen die Ergebnisse durch.

+0

Warum fügst du deiner Antwort nicht einfach ein 'grep' bei, wäre das nicht eine vollständige Lösung? –

+0

Danke, es funktioniert fast. Aber, für die meisten Pakete bekomme ich 'Files: Kann installated-files.txt nicht finden' ist es ein Problem meines Systems? – DdD

+1

@KraZmAzzD: Ich denke, Pip-Liste enthält Pakete, die nicht von 'pip' selbst installiert wurden, sondern von Ihrem System-Paket-Manager. Diese enthalten normalerweise nicht die Datei 'installed-files.txt'. –

0

Versuchen Sie dies!

find_pkg_by_filename(){ for pkg in $(pip list | cut -d" " -f1) ; do if pip show -f "$pkg" | grep "$1" ; then echo "=== Above files found in package $pkg ===" ; fi ; done ; } 

find_pkg_by_filename somefilename 

Beachten Sie, dass, wenn Sie -q zum grep hinzufügen, wird es so bald verlassen, da es ein Spiel ist, und dann über gebrochene Rohre pip wird sich beschweren.

Verwandte Themen