Certbot: zope.interface 错误

创建于 2016-04-19  ·  33评论  ·  资料来源: certbot/certbot

回溯(最近一次调用最后一次):
文件“./letsencrypt”,第 7 行,在
从 letencrypt.main 导入主
文件“/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/main.py”,第 11 行,在
导入 zope.component
文件“/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/初始化的.py”,第16行,在
from zope.interface 导入接口
导入错误:没有名为接口的模块

certbot-auto duplicate more-info

最有用的评论

对于仍然有 AWS ami 问题的任何人,您可以使用以下命令:

要创建新证书:
unset PYTHON_INSTALL_LAYOUT; rm -rf /root/.local/share/letsencrypt/; /root/certbot-auto --debug;

更新您的证书。

unset PYTHON_INSTALL_LAYOUT; rm -rf /root/.local/share/letsencrypt/; /root/certbot-auto --debug renew;

所有33条评论

/root/.local/share/letsencrypt/bin/pip freeze | grep -i interface的输出是什么?

/root/.local/share/letsencrypt/bin/pip freeze | grep -i 界面
您使用的是 pip 版本 8.0.3,但版本 8.1.1 可用。
您应该考虑通过“pip install --upgrade pip”命令进行升级。

/root/.local/share/letsencrypt/bin/pip 列表
极致 (0.5.0)
ConfigArgParse (0.10.0)
配置对象 (5.0.6)
enum34 (1.1.2)
funcsigs (0.4)
idna (2.0)
ip地址 (1.0.16)
让加密(0.5.0)
letencrypt-apache (0.5.0)
linecache2 (1.0.0)
模拟 (1.0.1)
ndg-httpsclient (0.4.0)
有序字典 (1.1)
解析日期时间 (2.1)
pbr (1.8.1)
点子 (8.0.3)
pyasn1 (0.1.9)
pycparser (2.14)
pyOpenSSL (0.15.1)
pyRFC3339 (1.0)
蟒蛇奥吉斯(0.5.0)
python2-pythondialog (3.3.0)
派兹 (2015.7)
请求 (2.9.1)
设置工具 (20.2.2)
六 (1.10.0)
回溯 2 (1.4.0)
unittest2 (1.1.0)
车轮 (0.29.0)
zope.component (4.2.2)
zope.event (4.1.0)
您使用的是 pip 版本 8.0.3,但版本 8.1.1 可用。
您应该考虑通过“pip install --upgrade pip”命令进行升级。

似乎没有安装zope.interface 。 这很奇怪。

我建议:

  1. 运行rm -rf /root/.local/share/letsencrypt 。 这会删除letsencrypt ,但会保留所有配置文件、证书、日志等。
  2. 确保您拥有letsencrypt-auto最新副本。 可以在这里找到。
  3. 再次运行letsencrypt-auto

如果您得到相同的行为,您可以尝试通过运行以下命令手动安装zope.interface

/root/.local/share/letsencrypt/bin/pip install zope.interface

[root@letsencrypt]# ./letsencrypt-auto --help --debug
正在检查新版本...
创建虚拟环境...
安装 Python 包...
安装成功。
请求 root 权限运行 letencrypt...
/root/.local/share/letsencrypt/bin/letsencrypt --help --debug
回溯(最近一次调用最后一次):
文件“/root/.local/share/letsencrypt/bin/letsencrypt”,第 7 行,在
从 letencrypt.main 导入主
文件“/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/main.py”,第 11 行,在
导入 zope.component
文件“/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/初始化的.py”,第16行,在
from zope.interface 导入接口
导入错误:没有名为接口的模块
[root@letsencrypt]# /root/.local/share/letsencrypt/bin/pip install zope.interface
收集zope.interface
要求已经满足(使用 --upgrade 升级):/root/.local/share/letsencrypt/lib/python2.7/dist-packages 中的 setuptools(来自 zope.interface)
安装收集的包:zope.interface
zope.interface 安装成功
您使用的是 pip 版本 8.0.3,但版本 8.1.1 可用。
您应该考虑通过“pip install --upgrade pip”命令进行升级。

Linux ip-10-11-180-115 3.14.20-20.44.amzn1.x86_64 #1 SMP Mon Oct 6 22:52:46 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

我已经是这些替代品了。 不成功

在执行/root/.local/share/letsencrypt/bin/pip install zope.interfaceletsencrypt-auto仍然会出错ImportError: No module named interface

是的。 仍然不起作用。

看起来像#2823 的骗局。 AMI 存在一些尚未解决的已知问题。 有些人已经通过这个评论获得了成功。

妈的 :P

我没有找到这个帖子。 但是,它有效。

# pip install pip --upgrade
# pip install virtualenv --upgrade
# virtualenv -p /usr/bin/python27 venv27
# . venv27/bin/激活
# git clone https://github.com/letsencrypt/letsencrypt
# cd letencrypt
# ./letsencrypt-auto certonly --debug --standalone -d

https://github.com/letsencrypt/letsencrypt/issues/1680#issuecomment -170641501

谢谢。

伟大的! 我很高兴它有效。

对我来说这个 cmd 解决了这个问题:
须藤取消设置 PYTHON_INSTALL_LAYOUT

@rmed19也对我

pip install --upgrade pip

pip install virtualenv --upgrade
然后
./certbot-auto renew
确实有效

正如@nohona指出的那样,我只需要更新内容。 问题是,有没有办法防止这种情况发生? 直到今天,我在这台服务器上已经成功了一段时间,这需要我运行这些更新命令。

以上都不适合我......

$ pip install --upgrade pip
Requirement already up-to-date: pip in /usr/local/lib/python2.7/site-packages
$ pip install virtualenv --upgrade
Requirement already up-to-date: virtualenv in ./.local/lib/python2.7/site-packages
$ cd letsencrypt/
$ ./certbot-auto renew
Error: couldn't get currently installed version for /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt:
Traceback (most recent call last):
  File "/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
    from certbot.main import main
  File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/dist-packages/certbot/main.py", line 11, in <module>
    import zope.component
  File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/__init__.py", line 16, in <module>
    from zope.interface import Interface
ImportError: No module named interface

我遇到了同样的问题:

[root<strong i="6">@www</strong> ec2-user]# /root/.local/share/letsencrypt/bin/pip -V
pip 9.0.1 from /root/.local/share/letsencrypt/local/lib/python2.7/dist-packages (python 2.7)
[root<strong i="7">@www</strong> ec2-user]# pip -V
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
[root<strong i="8">@www</strong> ec2-user]# /root/.local/share/letsencrypt/bin/pip install virtualenv --upgrade
Collecting virtualenv
  Using cached virtualenv-15.1.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
[root<strong i="9">@www</strong> ec2-user]# /root/.local/share/letsencrypt/bin/pip install zope.interface
Collecting zope.interface
Requirement already satisfied: setuptools in /root/.local/share/letsencrypt/lib/python2.7/dist-packages (from zope.interface)
Installing collected packages: zope.interface
Successfully installed zope.interface-4.3.3
[root<strong i="10">@www</strong> ec2-user]# pip install virtualenv --upgrade
Requirement already up-to-date: virtualenv in /usr/local/lib/python2.7/site-packages
[root<strong i="11">@www</strong> ec2-user]# /home/ec2-user/certbot-auto renew --debug
Error: couldn't get currently installed version for /root/.local/share/letsencrypt/bin/letsencrypt: 
Traceback (most recent call last):
  File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
    from certbot.main import main
  File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/certbot/main.py", line 11, in <module>
    import zope.component
  File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/__init__.py", line 16, in <module>
    from zope.interface import Interface
ImportError: No module named interface
[root<strong i="12">@www</strong> ec2-user]# 

数字海洋上的同样问题:
./certbot-auto renew Error: couldn't get currently installed version for /root/.local/share/letsencrypt/bin/letsencrypt: Traceback (most recent call last): File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module> from certbot.main import main ...
我认为这是0.11.1的问题,但我不确定为什么。

到目前为止,没有一个解决方案适合我更新我的证书。 然而,使用 Docker 解决方案还是很有魅力的。 大约 15 秒的停机时间。 感谢 Dockerhub 用户gzm55

安装docker,然后:
pull gzm55/certbot

暂时关闭您的服务器以释放端口 443(apache stop 或 pm2 stop 等),然后运行此命令(更改“YOUR_DOMAIN.COM”):
docker run -it --rm --net host -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt gzm55/certbot certonly --standalone --text -d YOUR_DOMAIN.COM "$@"

然后启动您的服务器备份。

我能够通过从一开始就按照网站上的当前说明重新开始 certbot 安装和更新过程来解决我的问题。 我认为问题是在更新底层工具之后出现的,而且自从最初安装以来已经很久了。

我现在有这个问题。 我已经删除并重新安装了 letencrypt 和 certbot 但始终收到消息...

Traceback (most recent call last): File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module> from certbot.main import main File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/certbot/main.py", line 11, in <module> import zope.component File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/zope/component/__init__.py", line 16, in <module> from zope.interface import Interface ImportError: No module named interface

我已经试过了.... pip install zope.interface唯一的作用就是加快上述错误的报告速度。

非常感谢任何建议,我的证书将在 24 小时后到期。

我今天在 Amazon Linux 上遇到了同样的问题。 使用sudo执行certbot-auto为我修复了它。

我在 Amazon Linux 上以 root 身份运行。 这是一种更新; 原始证书安装在同一台机器上很好。 我不确定会发生什么变化。

我尝试了上述更新 pip 和 virtualenv 的步骤......没有运气。 :-( 证书将在 9 天后到期。

我遇到了很多麻烦,但发现以下内容比 CLI 更好。

https://github.com/Daplie/node-greenlock

这一系列命令似乎解决了我的 AWS 实例上的问题:

sudo yum install python-virtualenv python27-virtualenv "python*zope*"
rm -rf ~/.local/share/letsencrypt
./certbot-auto --debug renew

一些已安装的软件包可能是多余的。

我还执行了:

~/.local/share/letsencrypt/bin/pip install pip --upgrade
~/.local/share/letsencrypt/bin/pip install virtualenv --upgrade

但它似乎没有效果。

以下要点对我有用:

$ sudo -H pip install zope.interface -U
$ sudo -H pip install certbot -U

例如,我必须在安装zope.interface certbot后“升级” zope.interface ,即使我之前已经安装了certbot

对于仍然有 AWS ami 问题的任何人,您可以使用以下命令:

要创建新证书:
unset PYTHON_INSTALL_LAYOUT; rm -rf /root/.local/share/letsencrypt/; /root/certbot-auto --debug;

更新您的证书。

unset PYTHON_INSTALL_LAYOUT; rm -rf /root/.local/share/letsencrypt/; /root/certbot-auto --debug renew;

对我来说,部分问题与围绕 64 位软件包的一些奇怪的默认行为有关。

cd /root/.local/share/letsencrypt
\cp -r ./venv/lib64/* ./venv/lib/

实际解决了问题

只是为@lifeofguenter发布的解决方案添加一些颜色 - 当我的更新脚本失败时,我在 AWS linux 上的解决方案似乎每次都不同! 这次,以root sudo su -登录,各种更新都没有用。 不断得到 zope.interface 未设置。

最后尝试的解决方案是:

$ pip install zope.interface -U
$ pip install certbot -U

没有 sudo-ing(以 root 身份使用)

但是随后./certbot-auto --debug renew再次失败并显示 no zope 界面消息。 然后我尝试了sudo ./certbot-auto --debug renew并且这有效。 不清楚为什么,它有点不应该。 以前没用过!

在某个阶段,我看到 pip v 6.1.6 的引用弹出,所以它在某处,但我删除并重新安装了所有相关的东西。 AWS + root / sudo /letsencrypt 可能在链上的某个地方存储了一个依赖项,当 pip 更新时它不会更新?

谢谢@ilamp ! 像魅力一样工作

我正在使用 AWS Linux 并且遇到了同样的问题:“没有名为接口的模块错误”。 我做了@ilamp 的建议,但没有奏效。 在我执行以下操作后,问题解决了:

$ rm -rf /opt/eff.org

另一个更新,由于安装位置不同,我的问题再次与 PIP 在 AWS 上的 64 位软件包的安装位置有关。 这是通过安装一次然后运行来解决的

\cp -r /opt/eff.org/certbot/venv/lib64/* /opt/eff.org/certbot/venv/lib/

随着安装文件的位置随更新而移动,位置可能需要更改,但一般修复保持不变。

这是在 AWS AMI 实例上。

所以我想我已经弄清楚问题是什么:任何有 C 源代码或头文件的东西都被构建为 64 位并放置在 /lib64 dist-packages 中,任何没有落在 /lib 中的东西。 这意味着 cffi、cryptography 和 zope.interface,它们必须重新构建为 32 位才能工作,或者像 Namingwaysway 的方法那样以 64 位运行(因为它完全复制了 64 位 Python)。

我经常在亚马逊 ami 上进行 certbot-auto 更新。
有一天,它因该错误而停止工作。
我所要做的就是:

rm -rf ~/.local/share/letsencrypt
 sudo ./certbot-auto renew --debug

更新时似乎仍然是一个问题 - 即使有

rm -rf ~/.local/share/letsencrypt
 sudo ./certbot-auto renew --debug

和/或

unset PYTHON_INSTALL_LAYOUT; rm -rf /root/.local/share/letsencrypt/; /root/certbot-auto --debug renew;

由于我只有 24 小时的时间来更新此证书,我想我只会使用受信任的 CA 手动安装证书,因为对于 AMI 实例来说,这似乎是一个更顺畅的过程,不过,让它顺利运行会很好。

编辑:作为发布后的最后一次尝试,我尝试过

$ rm -rf /opt/eff.org

根据 0xnm 的评论,这似乎有效! 谢谢

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

pfigel picture pfigel  ·  3评论

DirkWolthuis picture DirkWolthuis  ·  3评论

GEEK-WALKER picture GEEK-WALKER  ·  3评论

marceliwac picture marceliwac  ·  3评论

LouWii picture LouWii  ·  4评论