Ich habe, indem man zuerst den Import es für die Suche nach dem Pfad eines Moduls mehrere Ansätze gesehen. Gibt es eine Möglichkeit, dies zu tun, ohne das Modul zu importieren?Finden Pfad des Moduls ohne in Python importieren
Antwort
pkgutil Modul verwenden:
>>> import pkgutil
>>> package = pkgutil.get_loader("pip")
>>> package.filename
'/usr/local/lib/python2.6/dist-packages/pip-0.7.1-py2.6.egg/pip'
>>> package = pkgutil.get_loader("threading")
>>> package.filename
'/usr/lib/python2.6/threading.py'
>>> package = pkgutil.get_loader("sqlalchemy.orm")
>>> package.filename
'/usr/lib/pymodules/python2.6/sqlalchemy/orm'
Mit imp Modul:
>>> import imp
>>> imp.find_module('sqlalchemy')
(None, '/usr/lib/pymodules/python2.6/sqlalchemy', ('', '', 5))
>>> imp.find_module('pip')
(None, '/usr/local/lib/python2.6/dist-packages/pip-0.7.1-py2.6.egg/pip', ('', '', 5))
>>> imp.find_module('threading')
(<open file '/usr/lib/python2.6/threading.py', mode 'U' at 0x7fb708573db0>, '/usr/lib/python2.6/threading.py', ('.py', 'U', 1))
NB: mit imp Modul Sie kann nicht etwas tun, wie imp.find_module('sqlalchmy.orm')
Dieser arbeitete für mich, danke. – jeffcook2150
@cookiecaper: glücklich es helfen :) – mouad
@cgohlke: eigentlich ist ihr kein __pkutil__ Paket, es sollte __pkgutil__ sein, es war ein Tippfehler, danke für das Aufzeigen :) – mouad
Vielleicht möchten Sie laufen diese in Ihrem Dolmetscher versuchen:
>>> import sys
>>> sys.modules['codecs'].__file__ # codecs is just an example
'/usr/lib/python2.7/codecs.pyc'
+1 Ich hätte ein DFS oder etwas vorgeschlagen, das os.system verwendet. Aber das ist genial - wusste nicht, dass das getan werden könnte – inspectorG4dget
Dies funktioniert nicht, außer mit einigen Modulen von der STDLIB. Versuchen Sie es mit SQLAlchemy. Danke für die Antwort. – jeffcook2150
Dies funktioniert nicht für Pakete, die nicht bereits geladen wurden. – mouad
- 1. Importieren des Lync/Skype-Moduls
- 2. Python-Importe: Importieren eines Moduls ohne .py-Erweiterung?
- 3. Boost Python: Probleme beim Importieren eines Moduls
- 4. Surpress Scapy Warnmeldung beim Importieren des Moduls
- 5. Attribute des Python-Moduls `this`
- 6. Importieren verschachtelten Typescript-Moduls
- 7. Fehler beim Importieren des npm-Moduls in react-native
- 8. Dateipfad des importierten Moduls abrufen
- 9. Importieren Python-Modul nicht auf Pfad
- 10. Erstellen und Importieren eines benutzerdefinierten Moduls in Python
- 11. Failing Eigenschaften eines Moduls importieren
- 12. In Python importieren Sie alle Klassen aus einem anderen Modul, ohne den Namespace des importierten Moduls beizubehalten?
- 13. importierenden Moduls Python
- 14. Verwenden von Python-Multiprocessing beim Importieren eines Moduls über Dateipfad
- 15. Importieren eines Moduls basierend auf der installierten Python-Version?
- 16. Finden Sie den vollständigen Pfad des Python-Interpreters?
- 17. Wie kennt npm den Pfad zur Installation des Moduls von
- 18. Iterate durch Klassen des Moduls (aber nicht Importe) in Python
- 19. Finden Sie die Größe jedes kompilierten Moduls in Python virtualenv?
- 20. Python: das enthaltene Paket importieren
- 21. Wie zeigen Sie den Pfad des aktuell ausgeführten Python-Moduls an?
- 22. Get __name__ von in Python-Funktion des Moduls Aufruf
- 23. Verwenden des Python-xlwings-Moduls zum Erstellen von Zellkommentaren
- 24. Magento: Ändern des Newsletter-Moduls
- 25. Python importieren eine subpackage ohne andere
- 26. Importieren eines Moduls aus einem Verzeichnis (Paket) eine Ebene höher
- 27. Abrufen des aktuellen Computername in Powershell ohne Verwendung des ActiveDirectory-Moduls
- 28. Fehler beim Importieren des Moduls beim Ausführen von PyInstaller generierte Binärdatei
- 29. Fehler beim Verknüpfen des Moduls in ocaml
- 30. Python-Beizen nach dem Ändern des Verzeichnisses eines Moduls
Warum? Warum willst du es nicht importieren? – user225312
Da der Import an dem Punkt im Programm, an dem die Pfade benötigt werden, nutzlos ist, kann dies zu zirkulären Abhängigkeiten und anderen Problemen führen. Der Import erfolgt später zu einem günstigeren Zeitpunkt. – jeffcook2150
Auch möchten Sie vielleicht nur den Quellcode betrachten, ohne Code im Modul auszuführen. –