He visto varios enfoques para encontrar la ruta de un módulo importándolo primero. ¿Hay alguna forma de hacerlo sin importar el módulo?Buscar la ruta del módulo sin importar en Python
Respuesta
Usando pkgutil módulo:
>>> 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'
Usando imp módulo:
>>> 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: con módulo de imp se no puede haga algo como imp.find_module('sqlalchmy.orm')
Este trabajó para mí, gracias. – jeffcook2150
@cookiecaper: contento si ayuda :) – mouad
@cgohlke: en realidad no es un paquete __pkutil__, debería ser __pkgutil__, fue un error tipográfico, gracias por señalarlo :) – mouad
Es posible que desee intentar ejecutar esto en su intérprete:
>>> import sys
>>> sys.modules['codecs'].__file__ # codecs is just an example
'/usr/lib/python2.7/codecs.pyc'
+1 Hubiera sugerido un DFS o algo usando el sistema os.system. Pero esto es increíble, no sabía que esto podría hacerse – inspectorG4dget
Esto no funciona, excepto con algunos módulos de stdlib. Pruébalo con SQLAlchemy. Gracias por la respuesta, sin embargo. – jeffcook2150
esto no funcionará para el paquete que no se ha cargado previamente. – mouad
- 1. Importar el módulo de python NO en la ruta
- 2. Importar un módulo python sin la extensión .py
- 3. dinámicamente importar módulo de Python
- 4. Buscar la ruta completa del intérprete de Python?
- 5. problemas al importar el módulo python
- 6. Cómo des-importar un módulo de Python?
- 7. Python 3.2: no se puede importar el módulo del sqlite3
- 8. Importar módulo de la subcarpeta
- 9. ¿Importar un módulo basado en la versión de python instalada?
- 10. Boost Python: Problemas para importar un módulo
- 11. ¿Cómo puedo importar el módulo sqlite3 en Python 2.4?
- 12. Obtención de la ruta del archivo del módulo importado
- 13. Python - importar en if
- 14. Importar un módulo en Python solo si no existe
- 15. ¿Cómo se determina la ruta de búsqueda del módulo python en Mac OS X?
- 16. Importar módulo de mapeo en Python para una fácil refactorización
- 17. ¿Cómo uso una ruta relativa en un módulo de Python cuando la CWD ha cambiado?
- 18. ¿Cómo no escribir la ruta completa del módulo en ruby?
- 19. Cómo importar un módulo en Python con importlib.import_module
- 20. Python importar un módulo en una clase única
- 21. Problema al importar 'tiempo' como un módulo en python
- 22. ImportError: Sin módulo denominado - Python
- 23. Dependencia del módulo Python
- 24. ¿Cómo importar clases internas sin dependencia de ruta en Scala?
- 25. Importar un módulo Python en una plantilla Jinja?
- 26. ImportError al intentar importar un módulo personalizado en Python
- 27. Python: Encuentre la ruta absoluta de un módulo importado
- 28. python tarfile sin ruta completa
- 29. __package__ es Ninguno al importar un módulo de Python
- 30. ¿Cómo se hace el equivalente de "importar * del módulo" con la función __import__ de Python?
¿Por qué? ¿Por qué no quieres importarlo? – user225312
Porque importar es inútil en el punto en el programa donde se necesitan las rutas y puede causar dependencias circulares y otros problemas. La importación ocurre en un momento más oportuno más adelante. – jeffcook2150
También es posible que desee simplemente mirar el código fuente sin ejecutar realmente ningún código en el módulo. –