Python 3.13,ModuleNotFoundError:没有名为“distutils”的模块

问题描述 投票:0回答:1

环境:Kubuntu 22.04 | 6.5.0-17 内核 Python:旧 3.10 -> 新 3.13

想尝试新的python版本,所以我在安装中添加了repo并sudo apt安装了python3.13(已安装:python3.13 python3.13-dev python3.13-minimal)

然后我尝试使用这个 python 脚本(使用我的旧 python)安装所有旧软件包(具有 3.13 版本的软件包)

pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("python3.13 -m pip install " + pkg['name'], shell=True)

我遇到了错误。然后我尝试从终端手动执行此操作,看看出了什么问题。 输入 python3.13 -m pip install SomePackage,我得到:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3/dist-packages/pip/__main__.py", line 29, in <module>
    from pip._internal.cli.main import main as _main
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/main.py", line 9, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/cmdoptions.py", line 23, in <module>
    from pip._internal.cli.parser import ConfigOptionParser
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/parser.py", line 12, in <module>
    from pip._internal.configuration import Configuration, ConfigurationError
  File "/usr/lib/python3/dist-packages/pip/_internal/configuration.py", line 26, in <module>
    from pip._internal.utils.logging import getLogger
  File "/usr/lib/python3/dist-packages/pip/_internal/utils/logging.py", line 27, in <module>
    from pip._internal.utils.misc import ensure_dir
  File "/usr/lib/python3/dist-packages/pip/_internal/utils/misc.py", line 39, in <module>
    from pip._internal.locations import get_major_minor_version
  File "/usr/lib/python3/dist-packages/pip/_internal/locations/__init__.py", line 14, in <module>
    from . import _distutils, _sysconfig
  File "/usr/lib/python3/dist-packages/pip/_internal/locations/_distutils.py", line 9, in <module>
    from distutils.cmd import Command as DistutilsCommand
ModuleNotFoundError: No module named 'distutils'

而且它不仅适用于一个包裹,而是适用于所有包裹。

我可以做什么来解决这个问题? 先谢谢你了

我尝试安装并重新安装Python,没有任何改变

尝试了 python3.13 -m pip install setuptools ,只是抛出上面的错误

尝试了 python3.13 -m pip install --upgrade setuptools,只是抛出上面的错误

尝试过 sudo apt install python3.13-distutils,不存在

尝试过 sudo apt install python3.13-setuptools,不存在

python-3.x
1个回答
1
投票

当我使用 deadsnakes虚拟环境 设置 python 时,通常会遇到较少的错误。您也许也可以在没有死蛇的情况下完成这项工作。

apt-get update
apt-get install -y software-properties-common  # for add-apt-repository
# add https://github.com/deadsnakes
add-apt-repository ppa:deadsnakes/ppa
# remove again as it was only needed to run the add-apt-repository python script
apt-get purge -y software-properties-common
# install python3.13 from deadsnakes
apt-get update
apt-get install -y python3.13 python3.13-dev python3.13-venv
# set up a virtual environment and prefer its entrypoints by prepending to PATH
export VIRTUAL_ENV="/usr/share/python3/app"
export PATH="${VIRTUAL_ENV}/bin:${PATH}"
python3.13 -m venv ${VIRTUAL_ENV}
# install packages in the virtual environment (this 'pip' now points to ${VIRTUAL_ENV}/bin/pip)
pip install -U pip setuptools wheel

这种方法(使用两个

export
语句)在基于 debian 的 docker 镜像中也非常有效,甚至是多阶段构建:生成的虚拟环境可以复制到最后阶段。例如参见 pycuda

© www.soinside.com 2019 - 2024. All rights reserved.