背景

由于python 版本比较多,且python2 和 python3 相差非常大。在实际工作中很多项目都需要同一台服务器运行上,因此我们可以选择直接运行,也可以选择使用 docker。如果使用 docker 那我们就不需要隔离环境;如果是在服务器运行上,那么必须要有隔离环境。比如有的项目使用 python 3.6,有的项目使用 python 2.7,此时我们可以借助 pyenv 帮助我们隔离python环境,让多个版本的 python 各自运行,没有任何冲突,完美共存。

注解 从 Python 3.6 开始,不推荐使用 pyvenv 脚本,而是使用 python3 -m venv 来帮助防止任何关于虚拟环境将基于哪个 Python 解释器的混淆。

使用 pyenv 安装 Python3sudo curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

执行完成后会提示需要将以下内容加入命令行配置文件:WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by adding

# the following to ~/.bashrc:

export PATH="/home/chenxinming/.pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

使用 bash 命令行则加入到 ~/.bashrc 文件末尾,并执行 source ~/.bashrc。echo 'export PATH="/home/chenxinming/.pyenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(pyenv init -)"' >> ~/.bashrc

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

使用 zsh 命令行则加入到 ~/.zshrc文件末尾,并执行 source ~/.zshrc。echo 'export PATH="/home/chenxinming/.pyenv/bin:$PATH"' >> ~/.zshrc

echo 'eval "$(pyenv init -)"' >> ~/.zshrc

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

echo 命令的含义是:将引号中内容写入某文件中

查看文件的底部内容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,编辑文件可以使用 vim 或者 vscode

或者使用vim命令:$ vim .bashrc

# 复制上面

export PATH="/home/chenxinming/.pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

$ source ~/.bashrc

最后,在使用 pyenv 之前,重新初始化 shell 环境,执行如下命令exec $SHELL

不执行该命令也是完全可以的,你可以关闭当前的终端窗口,重新启动一个就可以了。 此时,你已经完成了 pyenv 的安装了,你使用可以它的全部命令了。

Pyenv基础操作

查看可以安装的python的版本pyenv install --list

在安装python之前,要先安装python的一些依赖包:

若使用 Ubuntu 请确保系统中有 Python 依赖,命令来自Common build problems$ sudo apt-get install -y gcc make 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 libldap2-dev libsasl2-dev

配置生效后,即可通过执行以下命令来安装 Python:$ pyenv install 3.6.5

# 默认的安装源会非常慢,建议用以下方式安装:

# 可以先在淘宝的镜像下载源码包,放到 pyenv 的 cache 目录后在执行安装指定版本,例如:

$ v=3.6.5;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v

查看已安装的版本chenxinming@cxm:~$ pyenv versions

* system (set by /home/chenxinming/.pyenv/version)

3.6.5

Python 安装成功后,可以使用以下命令来切换全局的 Python 版本:$ pyenv global 3.6.5

局部设置版本,当前目录生效chenxinming@cxm:~$pyenv local 3.6.5

# 检查当前目录使用的python版本

chenxinming@cxm:~$ pyenv version

system

* 3.6.5 (set by /home/chenxinming/.python-version)

删除指定版本pythonpyenv uninstall 3.6.5

查看所有pyenv的指令pyenv commands

pyenv-virtualenv安装和使用安装检查pynev-virtualenv是否在插件目录中git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv