Python中zope.interface.registry的导入错误
我在虚拟环境中安装一个项目时遇到了错误。
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桌面用户来说非常有用。