环境: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,不存在
当我使用 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。