0

どういうわけか個別に再現できないという奇妙な問題がありますが、それは製品コードに表示され、もちろん製品コードは公開できません。

引数のためns.serverns.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 をインポートすることです。何が起こっているのか理解したいだけです。

4

1 に答える 1

1

うーん、2番目の質問は私が何日もかけて自問自答します。lib/python2.7/site-packages以前のインストールで誤って -e (開発モード) を pip に渡すのを怠ったため、古くなった Egg-info ディレクトリが にありました。すべてを完全にクリアして再インストールすると、修正されました。

于 2016-09-14T11:26:16.943 に答える