You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubuntu22.04升级Python3.13后distutils缺失报错求助

问题描述

环境信息

  • Kubuntu 22.04 | 6.5.0-17内核
  • Python版本:从3.10升级至3.13

操作与报错

为体验Python 3.13,添加第三方软件源后通过sudo apt安装了python3.13、python3.13-dev、python3.13-minimal。随后用Python 3.10运行以下脚本,尝试为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时,抛出ModuleNotFoundError: No module named 'distutils'异常,具体栈信息如下:

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、用pip升级setuptools、通过apt安装python3.13-distutils和python3.13-setuptools(无对应包),问题仍未解决。

解决方法

方法1:手动安装适配Python3.13的distutils

Ubuntu 22.04官方源未提供Python3.13的distutils包,可通过以下步骤手动补充:

  1. 安装Python3.13的虚拟环境工具(附带ensurepip):
    sudo apt install python3.13-venv
    
  2. 用ensurepip为Python3.13安装并升级pip:
    python3.13 -m ensurepip --upgrade
    
  3. 通过pip安装setuptools(内置distutils兼容实现):
    python3.13 -m pip install --upgrade setuptools
    

完成后再次执行python3.13 -m pip install即可正常使用。

方法2:使用虚拟环境隔离运行

虚拟环境可完全避免系统级Python的依赖冲突,是更安全的方案:

  1. 安装虚拟环境工具:
    sudo apt install python3.13-venv
    
  2. 创建并激活虚拟环境:
    python3.13 -m venv ~/py313-env
    source ~/py313-env/bin/activate
    
  3. 激活后,直接用pip安装包即可(此时pip自动适配Python3.13):
    pip install SomePackage
    

方法3:替换系统全局pip为Python3.13版本(谨慎操作)

若需要全局使用Python3.13的pip,可替换系统默认pip:

  1. 卸载系统原有的python3-pip:
    sudo apt remove python3-pip
    
  2. 为Python3.13安装并升级pip:
    python3.13 -m ensurepip --upgrade
    
  3. 创建软链接让pip3指向Python3.13的pip:
    sudo ln -sf ~/.local/bin/pip3.13 /usr/bin/pip3
    

注意:此操作会改变系统默认pip关联的Python版本,可能影响依赖Python3.10的系统工具,需谨慎执行。


内容的提问来源于stack exchange,提问作者YasuoTouchedMySpaggett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:36:03