ModuleNotFoundError: 没有名为‘ distutils.core’的模块

我最近从 Ubuntu 18.04升级到 19.04,它有 python 3.7。但是我在许多项目中使用 Python 3.6

现在,当我尝试用 PyCharm 中的 Python 36创建一个 virtualenv时,它会引发:

ModuleNotFoundError: No module named 'distutils.core'

enter image description here

我不知道该怎么办。

我尝试安装 distutils:

milano@milano-PC:~$ sudo apt-get install python3-distutils
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-distutils is already the newest version (3.7.3-1ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

但如你所见,我有最新的版本。

你知道该怎么做吗?

108495 次浏览

Python 基础解释器确实需要一些额外的模块,这些模块不是默认安装的,比如 Ubuntu 18.04。

要解决这个问题,我们首先需要找到正在运行的 Python 版本。如果您只在系统上安装了一个 python 版本(并且您对此非常确定) ,则可以跳过此步骤。

# from your project interpreter run
# your_project_python --version
$ python3 --version
Python 3.7.8

现在需要为这个精确的 python 解释器安装 distutils。 这个例子的 解决方案是:

sudo apt install python3.7-distutils
# sudo apt install python3-distutils  # would just update default python intrpreter

请记住,从任何命令行运行 python 都可能是在您的项目中运行的 python 的另一个版本!

如果这没有帮助,请寻找以下可能性。这将带来从命令行中的别名解析出来的二进制文件。

$ which python
/usr/bin/python
$ ls -lach /usr/bin/python
lrwxrwxrwx 1 root root 9 Jun  8  2018 /usr/bin/python -> python2.7

原始资料来源: 请参阅本文

对于这个答案,我还合并、总结、排序和解释了一些由 Neo、 Andrei、 Mostafa 和 Wolfgang 提供的内容。

作为魔法师学徒的附注: 你可能会想卸载 python 解释器。对于提出的解决方案,根本没有必要! !然而,请记住,您的整个操作系统都依赖于一个 python 解释器。所以这个默认的,你不想卸载。如果你这样做,你在找到你的桌面任务栏和基本上一切都是一团糟。

其他个案

这发生在我的 python3.7安装上,但是在我将 ubuntu 升级到20.04之后没有发生在我的主 python3上

Solution:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install python3.7

如果我在 ubuntu 20.04(我的是 kubuntu 20.04) 但是没有用上有多个 python3版本(以3.8为主,3.9来自 ppa: dead Snake/ppa)

sudo apt install python3-distutils

然后是 对我有用

sudo apt install python3.9-distutils

对我来说,通过专门使用 python3解决了这个问题,从而确保使用 python3.8

python --version
Python 3.7.5


python3 --version
Python 3.8.5

目前,我使用的是 ubuntu 18.04python 3.6.9:

sudo apt-get install python3-dev

更多详细信息: Python 中需要一些未安装的模块。

在试图在 pipenv 中安装 python3.9-distutils for python version 3.9之后,我仍然收到错误消息。 正如我注意到的,给你 python3.9-distutils 与该包的早期版本有冲突,不能安装在 Ubuntu18.04上。

我继续使用 python_version = "3.6"和 pipenv,否则 $ pipenv install将采用 Python 的最高版本,并将其写入 PipfilePipfile.lock

$ pipenv --rm #To remove the old environment
$ rm Pipfile* #Remove both Pipfiles
$ pipenv install --python 3.6