あ、しんのきです

趣味とか技術系とか

Let's Encryptで ImportError: No module named interface エラー

Let’s Encryptの証明書でSSL化しているドメインで、「Let’s Encrypt certificate expiration notice」のメールが届いた。

手動で ./certbot-auto renew してみたところ、以下のImportErrorが出ていたようだった。

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

unset PYTHON_INSTALL_LAYOUT をするといいという情報もあったが効果がなく、最終的に /root/.local/share/letsencrypt/bin/letsencrypt を削除したら動くようになった。

古いバイナリがコピーされて残っていたみたいだ。

ちなみに、Amazon Linuxだったので、次のcertbot実行時には–debugをつける必要があった。

(追記)

また同じ現象に遭遇したが、 unset PYTHON_INSTALL_LAYOUT も必要なようだった。

<br /> $ unset PYTHON_INSTALL_LAYOUT<br /> $ rm -rf /root/.local/share/letsencrypt/<br /> $ {PATH_TO_CERTBOT_AUTO} renew --debug<br />

これで大丈夫なはず。

参考:

AMI zope errors related to PYTHON_INSTALL_LAYOUT · Issue #2823 · certbot/certbot

Linux – Let’s encryptの証明書更新ができなくなってしまった(65454)|teratail