Wo sind die Python-Module gespeichert?


77

Ich habe vor kurzem angefangen, Python zu lernen und ich habe 2 Fragen zu Modulen.

  1. Gibt es eine Möglichkeit, eine Liste der auf einem Computer verfügbaren (dh installierten) Python-Module abzurufen?
  2. Ich verwende Ubuntu Karmic und Synaptic für die Paketverwaltung. Ich habe gerade ein Python-Modul installiert. Wo ist der Modulcode tatsächlich auf meinem Computer gespeichert? (Gibt es einen Standardspeicherort [empfohlen], an dem Module gespeichert werden)?

Antworten:


94

1) Gibt es eine Möglichkeit, eine Liste der auf einer Maschine verfügbaren (dh installierten) Python-Module zu erhalten?

Das funktioniert bei mir:

help('modules')

.

2) Wo ist der Modulcode tatsächlich auf meinem Computer gespeichert?

Normalerweise in /lib/site-packagesIhrem Python-Ordner. (Zumindest unter Windows.)

Hier können Sie sys.pathherausfinden, in welchen Verzeichnissen nach Modulen gesucht wird.


37
Wenn Sie den Speicherort eines bestimmten Moduls möchten, importüberprüfen Sie dessen __file__Attribut. Funktioniert für die meisten von ihnen.
Noufal Ibrahim

2
@ NoufalIbrahim Ihre Antwort ist wert wie die Antwort selbst. TY. Sie können es anhängen, um es für Benutzer fett zu machen.
BehradKhodayar

58

Importieren Sie in der Python-Befehlszeile zuerst das Modul, für das Sie den Speicherort benötigen.

import module_name

Geben Sie dann Folgendes ein:

print(module_name.__file__)

Zum Beispiel, um herauszufinden, wo sich "Pygal" befindet:

import pygal
print(pygal.__file__)

Ausgabe:

/anaconda3/lib/python3.7/site-packages/pygal/__init__.py

Als ich das versuchte, bekam ich diesen Fehler: Unable to initialize device PRNIrgendeine Idee warum? Vielen Dank.
Azurespot

7

Sie finden den Modulcode, indem Sie zuerst die Module auflisten:

help("modules")

Dies spuckt eine Liste von Modulen aus, die Python importieren kann. Am Ende dieser Liste steht ein Satz:

Geben Sie einen beliebigen Modulnamen ein, um weitere Hilfe zu erhalten. Oder geben Sie "modules spam" ein, um nach Modulen zu suchen, deren Name oder Zusammenfassung die Zeichenfolge "spam" enthält.

So finden Sie den Modulstandort:

help("module_Name")

zum Beispiel:

help("signal")

Viele Informationen hier. Scrollen Sie nach unten, um die Position zu finden

/usr/lib/python3.5/signal.py

Link kopieren. So zeigen Sie Code nach dem Beenden von Python REPL an:

nano /usr/lib/python3.5/signal.py

6

Auf Windows-Computern befinden sich Python-Module unter (Systemlaufwerk und Python-Version können variieren):

C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib

3
  1. Sie können die in aufgelisteten Verzeichnisse durchlaufen sys.path, um alle Module (außer den eingebauten) zu finden.
  2. Es wird wahrscheinlich irgendwo in der Nähe sein /usr/lib/pythonX.X/site-packages(wieder sehen sys.path). Verwenden Sie stattdessen die native Python-Paketverwaltung (über pipoder easy_installplus yolk). Pakete in von Linux-Distributionen verwalteten Repositorys sind in der Regel veraltet.

1

Wenn Sie Module verwenden condaoder pipinstallieren, können Sie diese verwenden

pip list

oder

conda list

um alle Module anzuzeigen. Dies zeigt alle Module im Terminal selbst an und ist viel schneller als

>>> help('modules')


0

1) Verwenden der Hilfefunktion

Rufen Sie die Python-Eingabeaufforderung auf und geben Sie den folgenden Befehl ein:

>>>help("modules")

Dadurch werden alle im System installierten Module aufgelistet. Sie müssen keine zusätzlichen Pakete installieren, um sie aufzulisten, aber Sie müssen das erforderliche Modul manuell suchen oder aus der Liste filtern.

2) Mit Pip Freeze

sudo apt-get install python-pip
pip freeze

Obwohl Sie zusätzliche Pakete installieren müssen, um dies zu verwenden, können Sie mit dieser Methode das Ergebnis einfach mit dem grepBefehl suchen oder filtern . zB pip freeze | grep feed.

Sie können die für Sie geeignete Methode verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.