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

在预装Python 3.10的Ubuntu 22.04中部署Python 2.7项目的最优方案

在Ubuntu 22.04上共存Python 2.7与Python 3.10的可行方案

直接安装Python 2.7是否可行?

完全可行,但绝对不能替换系统默认的Python 3.10——Ubuntu 22.04的核心工具(如apt)依赖Python 3,强行替换会导致系统崩溃。正确的做法是将Python 2.7安装到独立路径,与系统Python彻底隔离。

最优实现策略

1. 安装Python 2.7编译依赖

Ubuntu 22.04没有Python 2的预编译包,需从源码编译,先安装编译所需依赖:

sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget

2. 编译安装Python 2.7到独立目录

下载Python 2.7.18(最后一个稳定版)源码,编译时指定专属安装路径,避免污染系统环境:

wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar xzf Python-2.7.18.tgz
cd Python-2.7.18
./configure --prefix=/usr/local/python27 --enable-optimizations
make -j$(nproc)
sudo make install

3. 配置环境变量(可选)

将Python 2.7的可执行路径加入PATH,但放在系统Python路径之后,确保系统默认调用的仍是Python 3:
编辑~/.bashrc或~/.zshrc,添加:

export PATH=$PATH:/usr/local/python27/bin

生效配置:

source ~/.bashrc

此时可通过python2/pip2调用Python 2.7,系统默认的python/python3仍指向Python 3.10,互不干扰。

4. 为Python 2.7搭建虚拟环境

Python 2.7不支持内置venv模块,需用virtualenv实现环境隔离:
先安装Python 2版本的pip:

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | sudo /usr/local/python27/bin/python2

再安装virtualenv:

sudo pip2 install virtualenv

创建并激活项目专属虚拟环境:

mkdir python2_project && cd python2_project
virtualenv -p /usr/local/python27/bin/python2 venv
source venv/bin/activate

激活后,python会指向虚拟环境内的Python 2.7,直接执行python setup.py install即可安装依赖,完全不会影响系统或Python 3环境。

5. Python 3.10环境的保留与使用

系统默认的Python 3.10无需改动,如需隔离升级项目,直接用内置venv:

mkdir python3_project && cd python3_project
python3 -m venv venv
source venv/bin/activate
python setup.py install

退出虚拟环境执行deactivate命令即可。

关键注意事项

  • 永远不要用sudo pip2 install安装包,避免污染全局Python 2环境,所有依赖都安装在虚拟环境内。
  • 调用命令时明确指定python2/pip2或python3/pip3,彻底避免版本混淆。
  • 不要修改系统默认的/usr/bin/python软链接,否则会破坏系统核心工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:50:27