Ubuntu23.04下共存Python3.10与Python3.11并保障包管理器正常运行的解决方案咨询
Ubuntu23.04下共存Python3.10与Python3.11并保障包管理器正常运行的解决方案咨询
我完全理解你的困扰——Ubuntu23.04默认绑定了Python3.11,系统里的apt这类核心工具都依赖它,你想装Python3.10同时正常用venv和包管理器,还不能搞崩系统环境。刚好之前帮人解决过类似问题,给你两个靠谱的方案:
方案一:用pyenv管理多版本Python(推荐,更省心)
pyenv是专门用来管理多个Python版本的工具,它会把不同版本的Python隔离开,完全不会影响系统自带的Python3.11,操作也很简单:
- 先安装pyenv的依赖包:
sudo apt update && sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git - 克隆pyenv仓库到你的用户主目录:
git clone git@github.com:pyenv/pyenv.git ~/.pyenv - 配置环境变量,打开你的shell配置文件(比如
~/.bashrc或者~/.zshrc),添加以下内容:export PYENV_ROOT="$HOME/.pyenv" command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" - 让配置生效,执行:
source ~/.bashrc # 如果用zsh就执行source ~/.zshrc - 安装Python3.10(可以指定具体小版本,比如3.10.13):
pyenv install 3.10.13 - 设置Python版本:
- 全局生效(整个用户环境默认用3.10):
pyenv global 3.10.13 - 仅当前项目生效(进入项目目录后执行):
pyenv local 3.10.13
- 全局生效(整个用户环境默认用3.10):
- 验证:执行
python --version应该显示3.10.x,pip --version对应3.10的pip,python -m venv myenv可以正常创建虚拟环境。
方案二:从源码编译安装Python3.10
如果不想用pyenv,源码编译也是稳定的选择,只要指定安装路径,就不会干扰系统Python:
- 先安装编译依赖:
sudo apt update && sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl - 下载Python3.10的源码包(以3.10.13为例):
wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz - 解压源码包:
tar xzf Python-3.10.13.tgz - 进入解压后的目录:
cd Python-3.10.13 - 配置编译选项(指定安装路径,避免覆盖系统Python):
这里./configure --enable-optimizations --prefix=/usr/local/python3.10--enable-optimizations是开启编译优化,提升Python运行性能;--prefix指定安装到/usr/local/python3.10,和系统Python的路径完全分开。 - 编译(用
-j$(nproc)调用所有CPU核心加快速度):make -j$(nproc) - 安装:
sudo make install - 创建软链接,方便全局调用:
sudo ln -s /usr/local/python3.10/bin/python3.10 /usr/local/bin/python3.10 sudo ln -s /usr/local/python3.10/bin/pip3.10 /usr/local/bin/pip3.10 - 验证:执行
python3.10 --version、pip3.10 --version、python3.10 -m venv myenv,这些命令都应该正常运行。
重要提醒
绝对不要修改系统默认的python3或python软链接!Ubuntu23.04的apt、dpkg等核心工具严重依赖Python3.11,修改后会直接导致包管理器崩溃,这就是你之前遇到的问题。不管用哪个方案,都要保证系统自带的Python3.11不受影响。
备注:内容来源于stack exchange,提问作者MIku
相关产品推荐
相关产品推荐

