如何在已有Python 3.4的Linux系统中安装Python 3.5/3.6(不升级系统)
Got it!要在保留系统自带Python 3.4的前提下安装Python 3.5并隔离环境,这俩方法绝对靠谱,亲测有效:
方法一:源码编译Python 3.5 + virtualenv隔离环境
这种方法完全自定义安装路径,彻底和系统Python划清界限:
先安装编译依赖(根据你的Linux发行版选对应命令):
- Debian/Ubuntu系:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev - CentOS/RHEL系:
sudo yum groupinstall "Development Tools" && sudo yum install openssl-devel bzip2-devel libffi-devel
- Debian/Ubuntu系:
下载Python 3.5的源码包(找Python官网3.5.x的稳定版本,比如3.5.10),然后解压:
tar xzf Python-3.5.10.tgz cd Python-3.5.10配置编译选项,指定安装到用户目录(比如
$HOME/python35),避免触碰系统文件:./configure --prefix=$HOME/python35 --enable-shared编译并安装:
make && make install临时把Python 3.5加入环境变量(永久生效的话把下面这句加到
~/.bashrc或~/.zshrc,然后执行source ~/.bashrc):export PATH=$HOME/python35/bin:$PATH验证安装成功:
python3.5 --version安装virtualenv并创建隔离环境:
pip3.5 install virtualenv virtualenv -p python3.5 mypy35_env激活环境后就可以用Python 3.5了,退出环境用
deactivate:source mypy35_env/bin/activate
方法二:用pyenv管理多Python版本(更省心)
pyenv是专门用来管理多个Python版本的工具,切换方便,完全隔离系统环境:
先安装pyenv的依赖包:
- Debian/Ubuntu系:
sudo apt-get install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl - CentOS/RHEL系:
sudo yum install git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel
- Debian/Ubuntu系:
安装pyenv(可以用官方自动安装脚本,或者手动克隆仓库到
~/.pyenv目录)配置pyenv的环境变量,加到
~/.bashrc:echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc执行
source ~/.bashrc让配置生效安装Python 3.5:
pyenv install 3.5.10设置使用版本:
- 仅当前项目目录使用:在项目文件夹下执行
pyenv local 3.5.10,进入目录自动切换到3.5 - 不要设置全局版本,避免影响系统自带的Python 3.4
- 仅当前项目目录使用:在项目文件夹下执行
验证版本:
python --version
注意事项
- 不管用哪种方法,在隔离环境里安装包时不要加sudo,否则会污染系统环境
- 如果编译时出错,先检查依赖包是不是都装全了
- pyenv适合需要频繁切换不同Python版本的场景,一次性需求用源码编译也足够
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

