2010-04-15 6 views
5

Estoy tratando de modificar una biblioteca de Python que descargué y estoy usando. Pero los cambios que estoy haciendo no están haciendo nada. Así que sospecho que Python está importando una copia diferente de esta biblioteca desde otro lugar en el sistema de archivos. Entonces ...¿Cómo puedo saber de qué directorio proviene una biblioteca importada en python?

Cuando ejecuto import foolib en python, ¿cómo puedo decir en qué parte del sistema de archivos está obteniendo esa biblioteca?

Respuesta

6
import foolib 
print foolib.__file__ 

Lamentablemente, esto solo funciona para algunos módulos. P.ej. funciona en un módulo que escribí, pero no en sys.

2

Mire el foolib.__file__.

8

la respuesta correcta es utilizar sys.modules ... funciona en todo , incluso sys. sys.modules es un diccionario donde las claves son los nombres importados (módulos o paquetes), y los valores son sus respectivas ubicaciones. aquí hay alguna salida de uso de mi Mac:

$ python 
Python 2.5.1 (r251:54863, Feb 9 2009, 18:49:36) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys, os, django, google 
>>> sys.modules['sys'] 
<module 'sys' (built-in)> 
>>> sys.modules['os'] 
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc'> 
>>> sys.modules['django'] 
<module 'django' from '/Library/Python/2.5/site-packages/Django-1.1.1-py2.5.egg/django/__init__.pyc'> 
>>> sys.modules['google'] 
<module 'google' from '/usr/local/google_appengine/google/__init__.py'> 
Cuestiones relacionadas