2010-12-12 2 views
5

lorsque i module import utilisantcomment obtenir l'emplacement du module

import module_name 

est-il possible de voir où dans mon disque dur est que le module situé?

+0

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

Répondre

10

Il est à noter que les paquets ont __file__ attribut qui pointe vers __init__.py, ils ont aussi __path__ qui pointe vers le répertoire du paquet. Vous pouvez donc utiliser hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__.

Exemple (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

Avez-vous des preuves? Je l'ai juste essayé sur un paquet de moi-même, '__file__' est là (' package/__ init __. Pyc'), comme il se doit, vu que l'import "package" est juste un module appelé '__init__'. ('package .__ path__ == ['package']') –

+0

@Chris Mise à jour, merci. – khachik

+0

qu'en est-il des fonctions? Est-ce que l'emplacement peut également être déterminé (bien l'autre option semble être de simplement vérifier le chemin du module à partir duquel il est importé et espérer qu'il n'y a pas de mangling entre –

1
import module_name 
module_name.__file__ 
3

Essayez: module_name.__file__.

Si vous voulez « inspecter » un objet, utilisez: inspect

0

Vous pouvez utiliser le fichier du module attribut pour trouver l'emplacement.

import sys print sys.__file__

Questions connexes