Quick Fix:
Python raises the
ImportError: No module named 'zmq'
when it cannot find the library
zmq
. The most frequent source of this error is that you haven’t installed
zmq
explicitly with
pip install zmq
. Alternatively, you may have different
Python versions
on your computer, and
zmq
is not installed for the particular version you’re using.
In particular, you can try any of the following commands, depending on your concrete environment and installation needs:
💡 If you have only one version of Python installed:pip install zmq
💡 If you have Python 3 (and, possibly, other versions) installed:pip3 install
💡 If you don't have PIP or it doesn't work
zmq
python -m pip install
💡 If you have Linux and you need to fix permissions (any one):python3 -m pip install
zmq
zmq
sudo pip3 install
💡 If you have Linux with aptpip3 install
zmq
--user
zmq
sudo apt install
💡 If you have Windows and you have set up the
zmq
py
aliaspy -m pip install
💡 If you have Anaconda
zmq
conda install -c anaconda
💡 If you have Jupyter Notebook
zmq
!pip install
zmq
!pip3 install
zmq
Problem Formulation
You’ve just learned about the awesome capabilities of the
zmq
library and you want to try it out, so you start your code with the following statement:
import zmq
This is supposed to import the zmq library into your
(virtual) environment
. However, it only throws the following
ImportError: No module named zmq
:
>>> import zmq Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> import zmq ModuleNotFoundError: No module named 'zmq'
Solution Idea 1: Install Library zmq
The most likely reason is that Python doesn’t provide
zmq
in its standard library. You need to install it first!
Before being able to import the
zmq
module, you need to install it using Python’s package manager
pip
.
Make sure pip is installed on your machine.
To fix this error, you can run the following command in your Windows shell:
$ pip install zmq
This simple command installs
zmq
in your virtual environment on Windows, Linux, and MacOS. It assumes that your
pip
version is updated. If it isn’t, use the following two commands in your terminal, command line, or shell (there’s no harm in doing it anyways):
$ python -m pip install --upgrade pip $ pip install zmq
💡
Note
: Don’t copy and paste the
$
symbol. This is just to illustrate that you run it in your shell/terminal/command line.
Solution Idea 2: Fix the Path
The error might persist even after you have installed the
zmq
library. This likely happens because
pip
is installed but doesn’t reside in the path you can use. Although
pip
may be installed on your system the script is unable to locate it. Therefore, it is unable to install the library using
pip
in the correct path.
To fix the problem with the path in Windows follow the steps given next.
Step 1
: Open the folder where you installed Python by opening the command prompt and typing
where python
Step 2
: Once you have opened the
Python
folder, browse and open the
Scripts
folder and copy its location. Also verify that the folder contains the
pip
file.
Step 3
: Now open the
Scripts
directory in the command prompt using the
cd
command and the location that you copied previously.
Step 4
: Now install the library using
pip install zmq
command. Here’s an analogous example:
After having followed the above steps, execute our script once again. And you should get the desired output.
Other Solution Ideas
-
The
ModuleNotFoundError
may appear due to relative imports . You can learn everything about relative imports and how to create your own module in this article . -
You may have mixed up Python and pip versions on your machine. In this case, to install
zmq
for Python 3, you may want to trypython3 -m pip install zmq
or evenpip3 install zmq
instead ofpip install zmq
-
If you face this issue server-side, you may want to try the command
pip install --user zmq
-
If you’re using Ubuntu, you may want to try this command:
sudo apt install zmq
- You can also check out this article to learn more about possible problems that may lead to an error when importing a library.
Understanding the “import” Statement
import zmq
In Python, the
import
statement serves two main purposes:
- Search the module by its name, load it, and initialize it.
-
Define a name in the local namespace within the scope of the
import
statement. This local name is then used to reference the accessed module throughout the code.
What’s the Difference Between ImportError and ModuleNotFoundError?
What’s the difference between
ImportError
and
ModuleNotFoundError
?
Python defines an
error hierarchy
, so some error classes
inherit
from other error classes. In our case, the
ModuleNotFoundError
is a subclass of the
ImportError
class.
You can see this in this screenshot from the docs :
You can also check this relationship using the
issubclass()
built-in function:
>>> issubclass(ModuleNotFoundError, ImportError)