2010-12-12 13 views
5

kiedy zaimportować moduł używającjak dostać lokalizację modułu

import module_name 

to możliwe, aby zobaczyć, gdzie na moim twardym dysku jest to, że moduł znajduje?

+0

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

Odpowiedz

10

Warto wspomnieć, że pakiety mają __file__ atrybut, który wskazuje na __init__.py, mają też __path__ który wskazuje katalog pakietu. Więc możesz użyć hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__.

Przykład (w 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

Czy masz dowody? Po prostu wypróbowałem to na własnym pakiecie, '__file__' jest tam (' pakiet/__ init __. Pyc'), tak jak powinno być, ponieważ importowanie "paczki" jest po prostu modułem o nazwie "__init__". ('pakiet .__ ścieżka__ == ['pakiet']') –

+0

@Chris Zaktualizowany, dziękuję. – khachik

+0

co z funkcjami? czy można tam również ustalić lokalizację (druga opcja wydaje się po prostu sprawdzać ścieżkę modułu, z którego jest importowana i mam nadzieję, że nie ma między nimi pomijania.) –

1
import module_name 
module_name.__file__ 
3

Wypróbuj: module_name.__file__.

Jeśli chcesz „sprawdzać” obiektu, zastosowanie: inspect

0

Można użyć plików atrybut modułu aby znaleźć lokalizację.

import sys print sys.__file__

Powiązane problemy