Quando importo modulo utilizzandocome ottenere la posizione del modulo
import module_name
è possibile vedere dove nel mio hard disk si trova quel modulo?
Quando importo modulo utilizzandocome ottenere la posizione del modulo
import module_name
è possibile vedere dove nel mio hard disk si trova quel modulo?
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']
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']') –
@Chris Aggiornato, grazie. – khachik
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. –
import module_name
module_name.__file__
Prova: module_name.__file__
.
Se si vuole 'controllare' un oggetto, l'uso: inspect
È possibile utilizzare file di attributo del modulo per trovare la posizione.
import sys print sys.__file__
duplicati di: http://stackoverflow.com/questions/269795/how-do-i-find-the-location-of-python-module-sources – Hugo