どういうわけか個別に再現できないという奇妙な問題がありますが、それは製品コードに表示され、もちろん製品コードは公開できません。
引数のためns.server
にns.protobuf
、 と の 2 つのパッケージがあります。後者は、プロジェクトの protobuf 固有の拡張機能を実装しています。どちらのパッケージも、setup.py で名前空間パッケージを適切に宣言し、ボイラープレートの pkg_resources を次のように持っています__init__.py
。
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 をインポートすることです。何が起こっているのか理解したいだけです。