0

我有一个奇怪的问题,我不知何故无法单独重现,但它出现在生产代码中,当然生产代码不能公开共享。

我有两个包,为了论证,ns.serverns.protobuf,后者为项目实现了 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

呃,第二个问题我会在几天内自行回答。我有一个陈旧的 egg-info 目录lib/python2.7/site-packages,来自以前的安装,我不小心忽略了将 -e (开发模式)传递给 pip。彻底清除一切并重新安装修复它。

于 2016-09-14T11:26:16.943 回答