get-pip: ModuleNotFoundError: No module named 'distutils.cmd'

pip installation on Debian 11 via get-pip.py python 3.9.2

root@debi:~# python3 get-pip.py
Traceback (most recent call last):
  File "/root/get-pip.py", line 24556, in <module>
    main()
  File "/root/get-pip.py", line 139, in main
    bootstrap(tmpdir=tmpdir)
  File "/root/get-pip.py", line 115, in bootstrap
    monkeypatch_for_cert(tmpdir)
  File "/root/get-pip.py", line 96, in monkeypatch_for_cert
    from pip._internal.commands.install import InstallCommand
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/commands/__init__.py", line 9, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/cli/base_command.py", line 12, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/cli/cmdoptions.py", line 23, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/cli/parser.py", line 12, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/configuration.py", line 27, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/utils/misc.py", line 42, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/locations/__init__.py", line 14, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpc1mpf262/pip.zip/pip/_internal/locations/_distutils.py", line 9, in <module>
ModuleNotFoundError: No module named 'distutils.cmd'

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 14
  • Comments: 25 (10 by maintainers)

Most upvoted comments

It’s likely because you’re on a system that does not install the distutils module alongside python even though it is still part of the python standard library. sudo apt-get install python3-distutils (or something like that) should solve your issue.

if you get this error ModuleNotFoundError: No module named ‘distutils.cmd you can try it sudo apt-get install python3.10-distutils

Sadly, on Ubuntu 20.04, python3-distutils is Python3.8 package. python3.9-distutils is a virtual that installs python3-distutils. The reason I am trying to install pip via get-pip.py is to have Python3.9 only, with no 3.8. I seems, I will have to get distutils directly from source first (what should be covered in get-pip.py IMHO).

Now, I see why it ‘worked’ before, it was Python 3.8

After manually adding distutils:

# python3.9 get-pip.py
Collecting pip
  Downloading pip-21.2.4-py3-none-any.whl (1.6 MB)
     |████████████████████████████████| 1.6 MB 31.9 MB/s
Collecting setuptools
  Downloading setuptools-57.4.0-py3-none-any.whl (819 kB)
     |████████████████████████████████| 819 kB 37.0 MB/s
Collecting wheel
  Downloading wheel-0.37.0-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel, setuptools, pip
Successfully installed pip-21.2.4 setuptools-57.4.0 wheel-0.37.0

# pip --version
Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'

# pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 5, in <module>
    from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'

# ls -l /usr/lib/python3.9/site-packages/
total 36
drwxr-xr-x 3 root root 4096 Aug 24 16:40 _distutils_hack
-rw-r--r-- 1 root root  152 Aug 24 16:40 distutils-precedence.pth
drwxr-xr-x 5 root root 4096 Aug 24 16:40 pip
drwxr-xr-x 2 root root 4096 Aug 24 16:40 pip-21.2.4.dist-info
drwxr-xr-x 6 root root 4096 Aug 24 16:40 pkg_resources
drwxr-xr-x 7 root root 4096 Aug 24 16:40 setuptools
drwxr-xr-x 2 root root 4096 Aug 24 16:40 setuptools-57.4.0.dist-info
drwxr-xr-x 5 root root 4096 Aug 24 16:40 wheel
drwxr-xr-x 2 root root 4096 Aug 24 16:40 wheel-0.37.0.dist-info

This is caused by pip being installed in site-packages, while it is not included in default sys.path.

Could you update get-pip.py to install pip and its friends in either sys.prefix/lib/pythonX.Y/dist-packages or sys.prefix/lib/pythonX.Y so pip can be used without need to update default sys.path? Thanks!

😭 Why Debian, Why Python? Why?

Hi @PawelZ-RD , Could you tell me, how manually adding distutils?

Same on Ubuntu 20.04, Python 3.9.5 It used to work fine couple weeks ago…

Same here, also on Debian