热门标签:
Q:

ImportError:没有名为distutils的模块

尝试安装psutils导致了一个很大的头痛。..

$ python -V
Python 2.4.2

$ cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 4


$ cd psutil-2.1.1/
$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 17, in ?
    from distutils.core import setup, Extension
ImportError: No module named distutils.core

接下来-我尝试安装setuptools以使用easy_install

$ which easy_install
which: no easy_install

$ cd ../setuptools-1.4/

$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 12, in ?
    from distutils.util import convert_path
ImportError: No module named distutils.util

尝试installdistutilsfromez_setup.py:

$ python ez_setup.py
Traceback (most recent call last):
  File "ez_setup.py", line 278, in ?
    main(sys.argv[1:])
  File "ez_setup.py", line 210, in main
    egg = download_setuptools(version, delay=0)
  File "ez_setup.py", line 139, in download_setuptools
    from distutils import log
ImportError: No module named distutils

那么-我该如何安装它?

P.S.不,我没有在这台机器上根,不能使用包管理器。

原网址
A:

你需要运行这个(如果在python3上发生错误)==>sudo apt-get install python3-distutils --reinstall

你需要运行这个(如果在python2上发生错误)==>sudo apt-get install python2-distutils --reinstall

所有回答

共 2 条

author avatar

我在这里有一个答案但我会在这里复制它

AskUbuntu答案:

Debian已经决定distutils不是一个核心python包,因此它不包含在debian和基于debian的操作系统的最后版本中。 你应该能够做到sudo apt install python3-distutils,它应该工作。

然而,它并没有为我工作。 我使用Parrot OS,这是基于Ubuntu,Debian的。 我升级了我的系统,pip停止了python3.7的工作,我也得到了错误ModuleNotFoundError: No module named 'distutils.util'

我尝试了很多东西来修复它并重新安装distutils,我纯粹的运气发现,pip3,对于python3.8确实工作。 然后我尝试了python3.7 -m pip3 -V,得到了/usr/bin/python3.7: No module named pip3,所以我决定在/usr/lib文件中查看一下。

我看着/usr/lib/python3/dist-packages,一切看起来都很好。 然后我看了看/usr/lib/python3.7,看到了文件夹distutil

我打开它,看到__pycache____init__.py文件和一个version.py文件。 我不知道有多少文件应该在那里,或者代码应该是什么,但我知道这两个文件要么是错误的,要么丢失了另一个文件。

然后我看了一下里面的东西/usr/lib/python3.8/distutil,它完全不同。 我发现了以下文件:

command                          Folder
__pycache__                      Folder
archive_util.py                  Python script
bcppcompiler.py                  Python script
cmd.py                           Python script
config.py                        Python script
core.py                          Python script
cygwinccompiler.py               Python script
debug.py                         Python script
dep_util.py                      Python script
errors.py                        Python script
extension.py                     Python script
fancy_getopt.py                  Python script
filelist.py                      Python script
file_util.py                     Python script
__init__.py                      Python script
log.py                           Python script
msvc9compiler.py                 Python script
_msvccompiler.py                 Python script
msvccompiler.py                  Python script
README                           Plain text file
spawn.py                         Python script
sysconfig.py                     Python script
text_file.py                     Python script
unixccompiler.py                 Python script
util.py                          Python script
version.py                       Python script
versionpredicate.py              Python script

这是很多更有希望的,并且由于pip3确实工作,我假设这个distutils也工作,我试图通过运行此命令将其复制到python3.7文件夹:

sudo cp -r /usr/lib/python3.8/distutil /usr/lib/python3.7/distutil

然后我再次尝试python3.7 -m pip -V并得到

pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.7)

然后我尝试安装一些模块,一切正常。 我希望这是有帮助的。

author avatar

@ciro

我需要做更多的事情才能让virtualenv再次运行(从18.04升级到20.04):

sudo cp /usr/lib/python3.8/_sysconfigdata__* /usr/lib/python3.6/
cd /usr/lib/python3.6
sudo ln -s _sysconfigdata_m_linux_x86_64-linux-gnu.py _sysconfigdata_m_x86_64-linux-gnu.py

相似问题