Python中zope.interface.registry的导入错误

5 投票
3 回答
3370 浏览
提问于 2025-04-17 20:12

我在虚拟环境中安装一个项目时遇到了错误。

from zope.interface.registry import Components
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named registry

这个模块的版本是4.0.5。

>>> import pkg_resources
>>> pkg_resources.get_distribution("zope.interface").version
'4.0.5'

我在我的电脑上(不是虚拟环境)试过同样的操作,

>>> import pkg_resources
>>> pkg_resources.get_distribution("zope.interface").version
'4.0.1'
>>> from zope.interface.registry import Components

这里的 from zope.interface.registry import Components 并没有出现任何错误。根据这个链接

QUOTE: 3.8.0 (2011-09-22) 
New module zope.interface.registry. This is code moved from 
zope.component.registry which implements a basic nonperistent component registry 
as zope.interface.registry.Components.

,它应该不会出现错误。有没有什么建议,帮我找出我遗漏了什么,或者如何解决这个错误?

3 个回答

0

我也遇到过同样的问题,升级所有的库解决了我的问题:

pip3 freeze --local | cut -d = -f 1 | xargs -I {} pip3 install --upgrade {}
0

如果还有人遇到同样的问题,可以试试这个:

apt remove --purge certbot
apt autoremove
apt clean
apt install certbot -u

这个方法在 'Debian 11 (bullseye)' 和 'Ubuntu 22.04' 上测试过。

4

我遇到了类似的错误——我试着创建一个没有安装额外包的虚拟环境。这个过程一切正常。但是我的Ubuntu系统上已经安装了zope.interface,所以它不想再在我的虚拟环境中安装一次。

这个冲突导致我的虚拟环境在使用mod_wsgi运行简单测试应用时出现错误:

     from zope.interface.registry import Components
ImportError: No module named registry

于是我尝试从基础Python中删除zope.interface。但是卸载命令并没有把它删掉(我在谷歌上查到这是个已知问题)。

后来我找到了解决办法:我切换到我的虚拟环境,然后在那儿给zope.interface下达了“升级”的命令:

(env)user@ubuntu:~/env$ sudo pip install --upgrade zope.interface

这样一来,我的zope.interface问题就解决了。

你的问题也类似,所以我的解决办法可能对你有帮助。总之,这个答案对Ubuntu桌面用户来说非常有用。

撰写回答