モジュールがfoo
の場合、Lib/site-packages
には、import foo
と表示されます。しかし、卵からのものをインストールすると、blah-4.0.1-py2.7-win32.egg
というようなものがフォルダ内にあり、モジュールの内容は内部にありますが、まだまだ複雑なものではありません。import foo
Pythonはどのようにして卵を追跡していますか? dist-utilsを経由せずにそのフォルダをPythonインストールにドロップするのと同じようにdirnameのマッチングだけではなく、モジュールを見つけられません。Pythonはeggをインストールしたモジュールをどのように追跡していますか?
明確にする: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
>>>
私は空のことでモジュール "笑"(および__init__.py
)で "何とか-4.0.1-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 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'ステートメントの実装をあまり問題なく読むことができます。彼らが言うように:「源を使う、ルーク」 –
@ S.Lott:質問は、「自分でやってください」という別のレベルで答えることができます。それはこのサイトの目的ではありません。これはさらに効率的です。私の代わりに、ソースを掘り下げて1時間ほど浪費させて、私は不幸にして、私はここでこれを尋ねることができます。私の答えを得る、幸せにする、他の人に代理人を与えてドーパミン放出を与える、他の誰かが知りたいと思えばこの質問をgoogleに表示させてください。 – Claudiu
"時間を無駄にする"?本当に?疲れが酷いようです。あなたは多くを学ぶでしょう。さらに、この部分はかなり完成したようです。 http://docs.python.org/library/modules.html#importing-modules私はあなたがドキュメントから始まらなかったことに驚いています。 –