ModuleNotFoundError: No module named 'zope.interface'


When I try to run cerbot, I have the following error :
[root@XXXXX certbot]# modules/bin/certbot
Traceback (most recent call last):
File "/opt/certbot/modules/bin/certbot", line 5, in
from certbot.main import main
File "/opt/certbot/modules/certbot/", line 6, in
from certbot._internal import main as internal_main
File "/opt/certbot/modules/certbot/_internal/", line 20, in
import zope.component
File "/opt/certbot/modules/zope/component/", line 25, in
from zope.interface import Interface
ModuleNotFoundError: No module named 'zope.interface'
When I check for module I have :
[root@xxxxx certbot]# pip3.9 list
Package Version

acme 1.31.0
certbot 1.31.0
certifi 2022.9.24
cffi 1.15.1
charset-normalizer 2.1.1
ConfigArgParse 1.5.3
configobj 5.0.6
cryptography 38.0.1
distro 1.8.0
idna 3.4
josepy 1.13.0
parsedatetime 2.6
pip 20.2.4
pycparser 2.21
pyOpenSSL 22.1.0
pyRFC3339 1.1
pytz 2022.5
requests 2.28.1
requests-toolbelt 0.10.0
setuptools 65.5.0
six 1.16.0
urllib3 1.26.12
zope.component 5.0.1
zope.event 4.5.0
zope.hookable 5.2
zope.interface 5.5.0

I use Python 3.9.7
pip 20.2.4
certbot 1.31.0
I'm on a Red Hat Enterprise Linux release 8.6 (Ootpa).

Thanks for help

Hi @tguenneguez, and welcome to the LE community forum :slight_smile:

How was certbot installed?


I find where my problem come from : pip


1 Like

What caught my eye was the versions of the zope componants... I don't understand zope or if it matters..

But a quick search on "the stack" for

Led me here:


Did you install all the Python requirements.txt for Certbot?
I am guessing most likely you did, but when things don't add up I go back to the basics.


I'm not that familiar with pip, but I don't recognise the "modules" directory? In my cases when using pip from within a virtual environment (which you should ALWAYS do when using pip IMO), all Python modules end up in e.g. ./lib/python3.8/site-packages/.. Is that "modules" thing a virtual environment?


The most likely cause for this (Certbot can't find zope.interface, but pip can) is that certbot and pip are being executed in different environments. One is likely using the normal system environment, and the other is being run from a virtualenv.

[root@xxxxx certbot]# pip3.9 list

I am not familiar with RHEL and how the prompts are structured, but this prompt suggests to me that you are not running in a virtual environment, which is the recommended/supported method. on every platform I've used, the prompt would have the virtual env name in parenthesis as a prefix. e.g.

(certbot_venv)[root@xxxxx certbot]# pip3.9 list

It is very possible that [root@xxxxx certbot] is how a venv is shown on your operating system, but I am not familiar with that.

While an experienced Python user should be able to debug this pretty quickly, there are so many potential causes and things to check that solving it on a forum will be fairly onerous.

Assuming this is a new installation, the easiest thing to do is to very carefully read the installation instructions and do a fresh installation from scratch.


This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.