Debian系统下不改动Python3.5.3,创建Python3.6虚拟环境咨询
这问题我太熟了——之前帮不少人解决过Debian下多Python版本隔离的坑,你不想碰系统级Python的思路完全正确,毕竟Debian的系统工具依赖自带Python版本,乱改容易炸。下面给你两个靠谱的方案,都是把Python3.6装在用户私有目录里,完全不影响系统的Python3.5.3:
方案一:用pyenv安装用户级Python3.6(最省心)
pyenv是专门用来管理多Python版本的工具,它会把不同版本的Python装在用户目录下,不会干扰系统环境。
步骤1:安装pyenv依赖
先装编译Python需要的基础包:
sudo apt update && sudo apt install 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 python-openssl git
步骤2:安装pyenv
用git把pyenv仓库克隆到用户目录下的~/.pyenv文件夹:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
然后把pyenv的环境变量加到你的shell配置文件(比如~/.bashrc,如果用zsh就是~/.zshrc):
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
步骤3:安装Python3.6
先查看可用的Python3.6版本(推荐装最后一个稳定版3.6.15):
pyenv install --list | grep 3.6
安装指定版本:
pyenv install 3.6.15
步骤4:创建Python3.6的virtualenv
先安装pyenv的virtualenv插件:
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
然后把插件的初始化命令加到shell配置文件:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc source ~/.bashrc
接下来创建虚拟环境:
pyenv virtualenv 3.6.15 my-python36-env
激活环境:
pyenv activate my-python36-env
退出环境:
pyenv deactivate
方案二:源码编译安装用户级Python3.6(更灵活)
如果不想用pyenv,也可以直接编译Python源码,安装到用户私有目录,完全独立于系统Python。
步骤1:安装编译依赖
和pyenv的依赖一样,执行下面的命令:
sudo apt update && sudo apt install 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 python-openssl
步骤2:下载并解压Python3.6源码
去Python官方网站下载Python3.6的最后稳定版3.6.15的源码包,下载完成后解压,进入解压后的源码目录。
步骤3:编译安装到用户目录
配置编译选项,指定安装路径为用户目录下的~/local/python3.6,这样不会影响系统:
./configure --prefix=$HOME/local/python3.6 --enable-optimizations --with-ensurepip=install
然后编译安装:
make -j$(nproc) make install
步骤4:创建virtualenv
现在你已经有了用户级的Python3.6可执行文件,路径是~/local/python3.6/bin/python3.6,直接用virtualenv指定这个路径创建环境:
virtualenv -p ~/local/python3.6/bin/python3.6 my-python36-env
激活环境:
source my-python36-env/bin/activate
退出环境:
deactivate
关键提醒
不管用哪种方案,绝对不要修改系统的/usr/bin/python3软链接——这是之前你出问题的核心原因。我们装的Python3.6都是用户私有版本,只会在你激活虚拟环境后生效,平时系统还是用原来的Python3.5.3,完全安全。
内容的提问来源于stack exchange,提问作者nat

