2010-04-15 12 views
5

Yüklediğim ve kullandığım bir python kitaplığını değiştirmeye çalışıyorum. Ama yaptığım değişiklikler hiçbir şey yapmıyor. Bu yüzden, python'un bu kütüphanenin farklı bir kopyasını dosya sisteminden başka bir yerden ithal ettiğinden şüpheleniyorum. Yani ...İçe aktarılan kitaplığın hangi dizinden python'dan geldiğini nasıl anlarım?

Python'da import foolib'u çalıştırdığımda, bu kütüphaneden nereden alındığını dosya sisteminde nasıl söyleyebilirim?

cevap

6
import foolib 
print foolib.__file__ 

Ne yazık ki, bu yalnızca bazı modüller için çalışır. Örneğin. Ben yazdım, ancak sys üzerinde bir modül üzerinde çalışır.

2

foolib.__file__'a bakın.

8

Doğru yanıt sys.modules kullanmaktır ... her şey, hatta sys çalışır. sys.modules, anahtarların içe aktarılan adlar (modüller veya paketler) olduğu ve değerlerin ilgili konumları olduğu bir sözlüktür. Mac'imden bazı kullanım çıktısı:

$ python 
Python 2.5.1 (r251:54863, Feb 9 2009, 18:49:36) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys, os, django, google 
>>> sys.modules['sys'] 
<module 'sys' (built-in)> 
>>> sys.modules['os'] 
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc'> 
>>> sys.modules['django'] 
<module 'django' from '/Library/Python/2.5/site-packages/Django-1.1.1-py2.5.egg/django/__init__.pyc'> 
>>> sys.modules['google'] 
<module 'google' from '/usr/local/google_appengine/google/__init__.py'> 
İlgili konular