私がモジュールを持っている場合、、foo
でLib/site-packages
、私はちょうどできimport foo
、それは動作します。ただし、eggsからコンテンツをインストールするblah-4.0.1-py2.7-win32.egg
と、モジュールの内容が内部にあるフォルダーのようなものが得られますが、それでも必要なのはimport foo
、それ以上の複雑なことではありません。Pythonはどのように卵を追跡しますか?dist-utilsを経由せずにそのフォルダーをPythonインストールにドロップするかのように、dirnameが一致するだけでなく、モジュールが見つかりません。
明確にするために:私はちょうど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
>>>
空のモジュール「haha」(および)を含む「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
ますか?