python3.8 ModuleNotFoundError: 没有名为“distutils.sysconfig”的模块和其他有趣的错误

python3.8 ModuleNotFoundError: 没有名为“distutils.sysconfig”的模块和其他有趣的错误

我想要做的就是安装并使用 matplotlib。

我在 Ubuntu 16.04 上使用 ROS。虽然 ROS 与我现在的目标无关,但我知道由于 ros kinetic 使用 python2.7,获取 catkin 工作区很棘手,因为我需要在 ros 的 PYTHONPATH 中使用 python2.7,但如果我需要为 matplotlib 使用 python3.8,它也必须在 PYTHONPATH 中。我不太熟悉如何在 Linux 上处理 python,但我在尝试解决这个问题的过程中学到了很多东西。

python版本是Python 2.7.12

python3 版本是 Python 3.8.5,我使用本网站

pip 和 pip3 版本结果出现此错误:

Traceback (most recent call last):
  File "/home/mike/.local/bin/pip", line 5, in <module>
    from pip._internal.cli.main import main
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 13, in <module>
    from pip.exceptions import InstallationError, CommandError, PipError
  File "/usr/lib/python3/dist-packages/pip/exceptions.py", line 6, in <module>
    from pip._vendor.six import iteritems
  File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 92, in <module>
    vendored("requests.packages.urllib3.packages.ordered_dict")
  File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 33, in vendored
    __import__(vendored_name, globals(), locals(), level=0)
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/packages/ordered_dict.py", line 11, in <module>
  File "/usr/lib/python2.7/_abcoll.py", line 70, in <module>
    Iterable.register(str)
AttributeError: type object 'Iterable' has no attribute 'register'

很可能我根本没有安装 pip。我以前也遇到过这个问题,我能够正确安装 pip3,但我猜它又坏了。

我的 PYTHONPATH 环境变量是:/usr/lib/python3.8:/usr/lib/python2.7

我的 .bashrc 的最后几行应该是唯一在这种情况下重要的行:

#source /opt/ros/kinetic/setup.bash
#source ~/catkin_ws/devel/setup.bash

#source ~/Documents/ROS/SRCAutoCar/devel/setup.bash
#source /usr/share/drcsim/setup.sh

#manually added PYTHONPATH for catkin_make
#export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.8/dist-packages
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.8
export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7

export TURTLEBOT3_MODEL=waffle

我尝试使用安装 pip本网站,但是在运行 python get-pip.py 命令时,结果却是:

  File "/usr/lib/python3.8/site.py", line 184
    file = sys.stderr)
         ^
SyntaxError: invalid syntax

这是有道理的,因为我调用的是 python2.7,但它使用的是 python3.8。我不知道如何解决这个问题。

无论如何,回到主要问题,我安装了 matplotlib 并将其导入到 python 脚本中:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()

使用 python3 运行该脚本的结果是:

Traceback (most recent call last):
    File "test.py", line 1, in <module>
        import matplotlib.pyplot as plt
    File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 118, in <module>
    import distutils.sysconfig
ModuleNotFoundError: No module named 'distutils.sysconfig'

问题是,当我尝试从 apt 安装 python3-distutils 或 python-distutils 时,apt 找不到它。我也从 apt 安装了 python3-distutils-extra 和 python-distutils-extra。

我发现可能的解决方案但运行命令

python3 -c "import sysconfig"
python3 -c "from distutils import sysconfig as distutils_sysconfig"

没有提供任何帮助。另一个可能的解决方案也不起作用。我创建了一个新的 python 文件并复制了脚本,但出现了一些错误。我修复了一些,但错误太多了。

我觉得我有几个问题,

首先,python 版本全都搞混了。当我需要 python2.7 来安装某些东西(例如 python get-pip.py)时,它使用的是 python3.8。当询问 pip3 是什么版本时,它调用的是 python 2.7 中的文件。我认为解决方案可能与环境变量有关,但我不知道。

其次,python3.8 可能安装不正确。我会重新安装它,但我知道这可能会搞乱我的操作系统。我还安装了 python3 和 python 3.5 试图解决这个问题。我希望这不是问题,因为 PYTHONPATH 环境变量不指向这两个

第三,pip 安装不正确。我尝试了几种解决方案,但都没有奏效。

我感谢您能提供的任何帮助,谢谢!

相关内容