前言
我觉得如果使用 python 开发的话,还是在 unix/linux 的环境下吧,shell 工具的效率比 windows 高得多,尽管 windows 下也有 cmder 这种神器,而且现在 windows store 也很好的开发出了 linux 子系统,但是瑕疵非常多,unix/linux 才是完美的环境。本文用到的是 archlinux ,另外 debian/ubuntu、centos 也完全适用。mac 用户也可以参考,不过 homebrew 也提供了非常方便的安装方法,但是建议使用文本做法。
背景
python 版本比较多,2 和 3 相差非常大,很多项目需要跑在同一台服务器上,我们可以选择直接运行,也可以选择使用 docker。如果用 docker 那就不需要隔离环境了,如果要直接运行在服务器上,那就必须有隔离环境。比如有的项目使用 python 3.5,有的项目使用 python 3.7,此时我们可以借助 pyenv 帮助我们完美的隔离环境,让多个版本的 python 没有任何冲突,完美共存。
任务
使用 pyenv 和 pyenv-virtualenv ,在 linux 下完美隔离 python 各个版本
第 1 章:使用环境
请注意,接下来所有的操作都在 archlinux 下进行,本文不涉及 windows
清单
- git
- zsh 或者 bash
- pyenv
- pyenv-virtualenv
1、安装 git
在各大 linux 的发行版下安装 git 都非常简单,此处只展示部分示例
archlinux
sudo pacman -S git
debian/ubuntu
sudo apt-get install git
centos
sudo yum install git
2、开启终端
本文使用 zsh
3、安装 pyenv
说明:本文的所有安装都严格遵守官方文档,与官方文档完全保持一致。
git 地址:https://github.com/pyenv/pyenv
在你的终端中执行如下命令,安全无毒,请放心食用:
首先把项目克隆下来,放在家目录下的隐藏文件夹中:.pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
然后配置环境变量
如果你使用 bash,就依次执行如下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
如果你使用 zsh,就依次执行如下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
echo 命令的含义是:将引号中内容写入某文件中
请注意,以上的三条 echo 命令的最后一条长长的命令,请你保证它引号中的内容处于 ~/.bashrc 或者 ~/.zshrc 的最底部。
因为在 pyenv 初始化期间会操作 path 环境变量,导致不可预测的行为。
查看文件的底部内容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,编辑文件可以使用 vim 或者 vscode
最后,在使用 pyenv 之前,重新初始化 shell 环境,执行如下命令
exec $SHELL
不执行该命令也是完全可以的,你可以关闭当前的终端窗口,重新启动一个就可以了。
此时,你已经完成了 pyenv 的安装了,你使用可以它的全部命令了,但是我建议你先别急着用,一口气装完 pyenv 的一个插件,那就是 pyenv-virtualenv
4、安装 pyenv-virtualenv
git 地址:https://github.com/pyenv/pyenv-virtualenv
把插件克隆在刚才已经安装完毕的 pyenv 的 plugins 文件夹中
