如果我有一個模塊,foo
,在Lib/site-packages
,我可以只是import foo
,它會工作。然而,當我從雞蛋中安裝東西時,我會得到類似blah-4.0.1-py2.7-win32.egg
的文件夾,裏面有模塊內容,但我仍然只需要做import foo
,而不是更復雜。 Python如何跟蹤雞蛋?這不僅僅是dirname匹配,如果我沒有通過dist-utils將該文件夾放到Python安裝中,它不會找到該模塊。Python如何跟蹤安裝了雞蛋的模塊?
更清晰:我剛安裝了zope。文件夾名稱是「zope.interface-3.3.0-py2.7-win32.egg」。這工作:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import zope.interface
>>>
我創建了一個 「嗒嗒-4.0.1-py2.7-win32.egg」 文件夾中的一個空模塊 「哈哈」(和__init__.py
)。這不起作用:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import blah.haha
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named blah.haha
>>>
這個呢,雖然:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg_resources import require
>>> require("blah>=1.0")
[blah 4.0.1 (c:\python27\lib\site-packages\blah-4.0.1-py2.7-win32.egg)]
>>> import haha
>>>
那麼,如何讓沒有require
工作?
Python源代碼完全爲您提供。你可以閱讀`import`語句的實現,而不會有太多的麻煩。正如他們所說:「使用源泉,盧克。」 – 2010-11-29 16:33:54