Если у меня есть модуль foo
в Lib/site-packages
, я могу просто import foo
, и он будет работать.Однако, когда я устанавливаю вещи из яиц, я получаю что-то вроде blah-4.0.1-py2.7-win32.egg
в виде папки с содержимым модуля внутри, но мне все еще нужно только сделать import foo
, а не что-нибудь более сложное.Как Python отслеживает яйца?Это не просто поиск по имени, как если бы я перетаскивал эту папку в установку 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» с пустым модулем «хаха» (и __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
?