pyenv入门

安装

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

安装后配置

安装完成后,pyenv命令还没有加进系统的环境变量,需要将如下内容加到~/.bash_profile中,然后执行source ~/.bash_profile

export PATH=$HOME/.pyenv/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

完成以上操作后,pyenv就安装完成了。

$ pyenv -v
pyenv 1.2.2

update

通过pyenv update命令,可以更新pyenv的所有内容。

查看所有可安装的Python版本

$ pyenv install --list |more
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  ...

安装指定版本的Python环境

$ pyenv install 3.6.0

查看当前系统中所有可用的Python版本

$ pyenv versions
* system 
  3.4.3
  3.5.0b1
  3.6.4

切换Python版本

pyenv可以从三个维度来管理Python环境,简称为:当前系统、当前目录、当前shell。这三个维度的优先级从左到右依次升高,即当前系统的优先级最低、当前shell的优先级最高。

如果想修改系统全局的Python环境,可以采用pyenv global PYTHON_VERSION命令。该命令执行后会在$(pyenv root)目录(默认为~/.pyenv)中创建一个名为version的文件(如果该文件已存在,则修改该文件的内容),里面记录着系统全局的Python版本号。

$ pyenv global 2.7.13
$ cat ~/.pyenv/version
2.7.13
$ pyenv version
2.7.13 
$ pyenv global 3.6.0
$ cat ~/.pyenv/version
3.6.0
$ pyenv version
3.6.0 

通常情况下,对于特定的项目,我们可能需要切换不同的Python环境,这个时候就可以通过pyenv local PYTHON_VERSION命令来修改当前目录的Python环境。命令执行后,会在当前目录中生成一个.python-version文件(如果该文件已存在,则修改该文件的内容),里面记录着当前目录使用的Python版本号。

$ cat ~/.pyenv/version
2.7.13
$ pyenv local 3.6.0
$ cat .python-version
3.6.0
$ cat ~/.pyenv/version
2.7.13
$ pyenv version
3.6.0
$ pip -V
pip 9.0.1

可以看出,当前目录中的.python-version配置优先于系统全局的~/.pyenv/version配置。

另外一种情况,通过执行pyenv shell PYTHON_VERSION命令,可以修改当前shell的Python环境。执行该命令后,会在当前shell session(Terminal窗口)中创建一个名为PYENV_VERSION的环境变量,然后在当前shell的任意目录中都会采用该环境变量设定的Python版本。此时,当前系统和当前目录中设定的Python版本均会被忽略。

$ echo $PYENV_VERSION
$ pyenv shell 3.6.0
$ echo $PYENV_VERSION
3.6.0
$ cat .python-version
2.7.13
$ pyenv version
3.6.0

顾名思义,当前shell的Python环境仅在当前shell中生效,重新打开一个新的shell后,该环境也就失效了。如果想在当前shell中取消shell级别的Python环境,采用unset命令重置PYENV_VERSION环境变量即可。

$ cat .python-version
2.7.13
$ pyenv version
3.6.0
$ unset PYENV_VERSION
$ pyenv version
2.7.13

Pycharm 如何切换 Pyenv 管理的安装包

当你使用pyenv切换了python版本时.Pycharm不会自动切换到对应的python. 需要自己手动的添加对应版本的绝对路径到Pycharm.
在Add Local 中添加pyenv管理的绝对路径.

禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容