Für ein reines Python-Modul finden Sie die Quelle unter themodule.__file__
. Das datetime-Modul ist jedoch in C geschrieben und datetime.__file__
verweist daher auf eine .so-Datei ( datetime.__file__
unter Windows gibt es keine ). Daher können Sie die Quelle nicht sehen.
Wenn Sie einen Python-Quell-Tarball herunterladen und extrahieren, finden Sie den Code der Module im Unterverzeichnis Modules .
Wenn Sie beispielsweise den Datum / Uhrzeit-Code für Python 2.6 suchen möchten, können Sie sich diesen ansehen
Python-2.6/Modules/datetimemodule.c
Die neueste Mercurial-Version finden Sie auch im Internet unter
https://hg.python.org/cpython/file/tip/Modules/_datetimemodule.c
Wenn Sie
python -v
über die Befehlszeile ausführen, sollten Sie erfahren, was von wo importiert wird. Dies funktioniert bei mir unter Windows und Mac OS X.Ich bin mir nicht sicher, was diese schlechten Zeiten auf meiner Installation sind!
quelle
built-in
Module?Mir ist klar, dass diese Antwort 4 Jahre zu spät ist, aber die vorhandenen Antworten sind irreführend.
Der richtige Weg, dies zu tun, ist niemals
__file__
, oder zu versuchen, durchzugehensys.path
und nach sich selbst zu suchen usw. (es sei denn, Sie müssen ab 2.1 abwärtskompatibel sein).Es ist das
inspect
Modul - insbesonderegetfile
odergetsourcefile
.Es sei denn, Sie möchten die Regeln (die für CPython 2.x dokumentiert, aber für andere Implementierungen oder 3.x überhaupt nicht dokumentiert sind) für die Zuordnung
.pyc
zu.py
Dateien lernen und implementieren . Umgang mit .zip-Archiven, Eiern und Modulpaketen; verschiedene Wege ausprobieren, um den Pfad zu.so
/.pyd
Dateien zu erhalten, die nicht unterstützt werden__file__
; herauszufinden, was Jython / IronPython / PyPy tun; usw. In diesem Fall machen Sie es.In der Zwischenzeit ist die Quelle jeder Python-Version ab 2.0+ online verfügbar
http://hg.python.org/cpython/file/X.Y/
(z. B. 2.7 oder 3.3 ). Sobald Sie feststellen, dassinspect.getfile(datetime)
es sich um eine.so
oder eine.pyd
Datei handelt/usr/local/lib/python2.7/lib-dynload/datetime.so
, können Sie sie im Modulverzeichnis nachschlagen. Genau genommen gibt es keine Möglichkeit, sicher zu sein, welche Datei welches Modul definiert, aber fast alle sind entwederfoo.c
oderfoomodule.c
, daher sollte es nicht schwer sein zu erraten, dass datetimemodule.c das ist, was Sie wollen.quelle
__file__
nicht für Nicht-Buildins? Ich verstehe, wo das Crawlen von sys.path schmerzhaft sein kann (insbesondere ohne Kenntnis von meta_path), aber ist Ihre Sorge um den Namespace zwischen__file__
Definitionen und Binärdateien?__file__
funktioniert,inspect.getfile
funktioniert; Es gibt keine Situation, in der das Erraten der Verwendung__file__
besser ist als nur das Inspektionsmodul.Die
sys.path
Liste enthält die Liste der Verzeichnisse, die zur Laufzeit nach Modulen durchsucht werden:quelle
python -c 'import sys; print "\n".join(sys.path)'
Damit können Sie es anzeigen, ohne in interaktives Python wechseln zu müssen.python -c 'import sys; print("\n".join(sys.path))'
Wenn Sie Ihre Module mit pip installieren, wird nur
pip show $module
der Speicherort zurückgegeben.quelle
$module
es war als Platzhaltervariable gedacht, nicht wörtlich, was manm=numpy; pip show $m
m
Versuchen Sie aus der Standardbibliothek imp.find_module
quelle
apt-get remove
DataDog und könnte es trotzdem importieren. Dies half mir herauszufinden, wo sich die Dateien befanden (damit ich sie löschen konnte), wenn die anderen Lösungen nicht halfen.imp
Paket (seit Version 3.4) zugunsten vonimportlib
(seit 3.1) docs.python.org/3.6/library/imp.htmlimport importlib
dannimportlib.util.find_spec('fontTools')
datetime
ist ein eingebautes Modul, daher gibt es keine (Python-) Quelldatei.Für Module, die aus
.py
(oder.pyc
) Dateien stammen, können Siemymodule.__file__
zquelle
Im Python-Interpreter können Sie das jeweilige Modul importieren und dann help (Modul) eingeben. Dies gibt Details wie Name, Datei, Moduldokumente, Beschreibung et al.
Ex:
et al
quelle
Hier ist ein Einzeiler, um den Dateinamen für ein Modul zu erhalten, das für das Shell-Aliasing geeignet ist:
Als Alias einrichten:
Benutzen:
quelle
Neu in Python 3.2 können Sie jetzt zB
code_info()
aus dem dis-Modul verwenden: http://docs.python.org/dev/whatsnew/3.2.html#disquelle
Schauen Sie sich diesen raffinierten "cdp" -Befehl an, um in das Verzeichnis zu cd, das die Quelle für das angegebene Python-Modul enthält:
quelle
Unter Windows finden Sie den Speicherort des Python-Moduls wie folgt: Suchen Sie das rest_framework-Modul
quelle
Unter Ubuntu 12.04 finden Sie beispielsweise das numpy-Paket für python2 unter:
Dies ist natürlich keine generische Antwort
quelle
Nicht alle Python-Module sind in Python geschrieben. Datetime ist eine davon, die es nicht ist, und (unter Linux) ist datetime.so.
Sie müssten den Quellcode in die Python-Standardbibliothek herunterladen, um darauf zuzugreifen.
quelle
Für diejenigen, die eine GUI-Lösung bevorzugen: Wenn Sie eine GUI wie Spyder (Teil der Anaconda-Installation) verwenden, können Sie einfach mit der rechten Maustaste auf den Modulnamen klicken (z. B. "csv" in "csv importieren") und "go" auswählen zur Definition "- dies öffnet die Datei, aber auch oben können Sie den genauen Speicherort der Datei sehen (" C: .... csv.py ")
quelle
Wenn Sie keinen Interpreter verwenden, können Sie den folgenden Code ausführen:
Ausgabe:
Das zweite Element in Array ist Ihr Paketspeicherort. In diesem Fall:
quelle
Eine andere Möglichkeit, über das Terminal zu überprüfen, ob mehrere Python-Versionen installiert sind.
-MBP: ~ python3 -m pip show pyperclip
Speicherort: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
MBP: ~ python -m pip show pyperclip
Speicherort: /Users/umeshvuyyuru/Library/Python/2.7/lib/python/site-packages
quelle
Importieren Sie in einer IDE wie Spyder das Modul und führen Sie es dann einzeln aus. Geben Sie hier die Bildbeschreibung ein
quelle
str()
des Modells ist eine genauere Beschreibung Ihrer