私は何とか別々に再現することはできませんが、それは実動コードで表示され、もちろん実働コードは一般に共有できません。pkg_resourcesがインポートされるまで、同じ名前空間ツリーのパッケージからインポートできません
私はns.server
とns.protobuf
の2つのパッケージを持っています。後者はプロジェクトのprotobuf固有の拡張を実装しています。どちらのパッケージには、適切setup.pyで名前空間のパッケージを宣言し、両方が定型が__init__.py
でものをpkg_resourcesあります
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
は現在、いくつかの奇妙な理由で、私はこの取得:
>>> import ns.protobuf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named protobuf
>>> import pkg_resources
>>> import ns.protobuf
>>>
をだから、と思われますpkg_resourcesをインポートしてから修正するまで、私の名前空間はすべて狂っています。あまりにも悪いことではありません。回避策はpkg_resourcesを最初にインポートすることです。私はちょうど何が起こっているのか理解したいと思います。