2010-12-12 16 views
5

cuando la importación del módulo víacómo obtener la ubicación del módulo

import module_name 

es posible ver donde en mi disco duro se encuentra ese módulo?

+0

Duplicado de: http://stackoverflow.com/questions/269795/how-do-i-find-the-location-of-python-module-sources – Hugo

Respuesta

10

Vale la pena mencionar que los paquetes tienen __file__ atributo que apunta a __init__.py, también tienen __path__ que apunta al directorio del paquete. Entonces puede usar hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__.

Ejemplo (en REPL):

import socket, SOAPpy # SOAPpy is a package 
socket.__file__ 
# .../python2.5/socket.pyc 
socket.__path__ 
# AttributeError: 'module' object has no attribute '__path__' 
SOAPpy.__file__ 
# .../2.5/site-packages/SOAPpy/__init__.pyc 
SOAPpy.__path__ 
# ['.../2.5/site-packages/SOAPpy'] 
+0

¿Tiene pruebas? Acabo de probarlo en un paquete mío, '__file__' está ahí (' paquete/__ init __. Pyc'), como debería ser, ya que la importación del "paquete" es solo un módulo llamado '__init__'. ('paquete .__ path__ == ['paquete']') –

+0

@Chris Actualizado, gracias. – khachik

+0

¿qué hay de las funciones? también se puede determinar la ubicación (la otra opción parece ser simplemente verificar la ruta del módulo desde el que se está importando y esperar que no haya ningún problema entre ellas. –

1
import module_name 
module_name.__file__ 
3

Probar: module_name.__file__.

Si desea 'inspeccionar' un objeto, utilice: inspect

0

Usted puede utilizar archivo atributo del módulo para encontrar la ubicación.

import sys print sys.__file__

Cuestiones relacionadas