2010-12-12 14 views
5

Quando importo modulo utilizzandocome ottenere la posizione del modulo

import module_name 

è possibile vedere dove nel mio hard disk si trova quel modulo?

+0

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

risposta

10

Vale la pena ricordare che i pacchetti hanno __file__ attributo che punta a __init__.py, hanno anche __path__ che punta alla directory del pacchetto. Quindi puoi usare hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__.

Esempio (in 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

Avete prove? L'ho appena provato su un pacchetto tutto mio, '__file__' è lì (' package/__ init __. Pyc'), come dovrebbe essere, visto che l'importazione del "pacchetto" è solo un modulo chiamato '__init__'. ('pacchetto .__ percorso__ == ['pacchetto']') –

+0

@Chris Aggiornato, grazie. – khachik

+0

e per le funzioni? può anche essere determinata la posizione (beh, l'altra opzione sembra essere semplicemente controllare il percorso del modulo da cui viene importata e sperare che non ci siano trappole. –

1
import module_name 
module_name.__file__ 
3

Prova: module_name.__file__.

Se si vuole 'controllare' un oggetto, l'uso: inspect

0

È possibile utilizzare file di attributo del modulo per trovare la posizione.

import sys print sys.__file__

Problemi correlati