2010-12-12 26 views

cevap

10

, onlar da paket dizinine işaret __path__ var: Eğer bir nesne, kullanımı 'teftiş' istiyorsan

. Böylece hasattr(module_name, '__path__') and module_name.__path__[0] or module_name.__file__'u kullanabilirsiniz. (Çoğaltma cinsinden)

Örnek:

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

Eğer kanıtınız var mı? Sadece kendi paketim üzerinde denedim, '__file__' var (' paket/__ init __. Pyc'), olması gerektiği gibi, '' paket '' ithalatı '' __init__' olarak adlandırılan bir modül. ('package .__ path__ == ['package']') –

+0

@Chris Güncellendi, teşekkürler. – khachik

+0

İşlevler ne olacak? Orada konumu da tespit edilebilir (diğer seçenek sadece ithal ediliyor olan modülün yolunu kontrol etmek ve aralarında mangling olmadığını umuyor gibi görünmektedir. –

1
import module_name 
module_name.__file__ 
3

Try: module_name.__file__. Bu paketler __init__.py işaret __file__ özniteliği söz etmek gerekiyor inspect

0

Sen yerini bulmak için modülün dosya özelliğini kullanabilirsiniz. arasında

import sys print sys.__file__