CentOS上Python多版本共存的常用方法
手动编译安装是最基础的共存方式,适合需要自定义Python版本或无第三方工具的场景。
sudo yum install -y gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel,确保编译所需工具和库已安装。Python-3.9.12.tgz),解压后进入目录,执行./configure --prefix=/usr/local/python3.9 --enable-optimizations(--prefix指定安装路径,--enable-optimizations优化性能),再通过make && sudo make altinstall编译安装(altinstall避免覆盖系统默认python命令)。python命令(sudo mv /usr/bin/python /usr/bin/python.bak),创建新软链接指向编译后的Python(如sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python),验证版本(python --version)。需注意修改/usr/bin/yum等系统脚本的shebang(改为#!/usr/bin/python2.7),避免yum无法运行。update-alternatives工具,将各版本加入管理系统(如sudo alternatives --install /usr/bin/python python /usr/bin/python2.7 1、sudo alternatives --install /usr/bin/python python /usr/local/python3.9/bin/python3.9 2),通过sudo alternatives --config python交互式切换默认版本。pyenv是专门用于管理多Python版本的工具,支持动态切换全局/局部版本,无需修改系统文件。
sudo yum install -y git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel xz xz-devel libffi-devel安装依赖,再通过curl https://pyenv.run | bash克隆pyenv仓库。~/.bashrc(或~/.bash_profile)中:export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
执行source ~/.bashrc使配置生效。pyenv install --list。pyenv install 3.8.12、pyenv install 2.7.18(支持同时安装多个版本)。pyenv global 3.8.12(所有终端默认使用该版本)。pyenv local 2.7.18(生成.python-version文件,仅当前目录及子目录生效)。pyenv global或pyenv local随时调整,无需修改系统配置。虚拟环境通过隔离Python解释器和依赖包,解决不同项目的版本冲突问题,适合开发场景。
sudo yum install -y python3-pip,再运行pip3 install virtualenv(或pip3 install virtualenvwrapper增强功能)。virtualenv -p /usr/bin/python3.9 myenv39(使用Python 3.9创建myenv39环境),或python3.9 -m venv myenv39(Python 3.3+原生支持)。source myenv39/bin/activate(激活后命令行提示符显示环境名)。deactivate(恢复系统默认环境)。pip install安装的包仅存在于当前环境,不会影响其他版本或其他项目。建议为每个项目单独创建虚拟环境,避免依赖冲突。conda是Anaconda/Miniconda提供的环境管理工具,适合数据科学领域(集成NumPy、Pandas等包),支持跨语言环境管理。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh,运行bash Miniconda3-latest-Linux-x86_64.sh,按提示安装(默认安装路径为~/miniconda3)。conda create -n myenv python=3.8(myenv为环境名,python=3.8指定版本)。conda activate myenv(激活后环境名显示在提示符左侧)。conda deactivate。conda env export > environment.yml),适合团队协作和项目迁移。