如果我有一个模块,foo
, in Lib/site-packages
,我可以import foo
并且它会工作。但是,当我从 egg 安装东西时,我得到了blah-4.0.1-py2.7-win32.egg
一个文件夹,里面有模块内容,但我仍然只需要 do import foo
,而不是更复杂的东西。Python如何跟踪鸡蛋?这不仅仅是 dirname 匹配,就好像我将该文件夹放入 Python 安装而不通过 dist-utils,它没有找到该模块。
更清楚一点:我刚刚安装了 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
>>>
我创建了一个“blah-4.0.1-py2.7-win32.egg”文件夹,其中包含一个空模块“haha”(和__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
?