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?
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?
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']
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']') –
@Chris Zaktualizowany, dziękuję. – khachik
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.) –
import module_name
module_name.__file__
Wypróbuj: module_name.__file__
.
Jeśli chcesz „sprawdzać” obiektu, zastosowanie: inspect
Można użyć plików atrybut modułu aby znaleźć lokalizację.
import sys print sys.__file__
Duplikat: http://stackoverflow.com/questions/269795/how-do-i-find-the-location-of-python-module-sources – Hugo