如果我有一个模块,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