使用pyenv管理工作环境

转帖地址:https://zhuanlan.zhihu.com/p/27294128

Python 2和Python 3之间存在着较大的差异,并且,由于各种原因导致了Python 2和Python 3的长期共存。在实际工作过程中,我们可能会同时用到Python 2和Python 3,因此,也需要经常在Python 2和Python 3之间进行来回切换。此外,如果你是喜欢尝鲜的人,那么,你很有可能在Python的新版本出来的时候,立即下载Python的最新版本,试验Python的最新特性。

在Python世界里,除了需要对Python的版本进行管理以外,还需要对不同的软件包进行管理。大部分情况下,对于开源的库我们使用最新版本即可。但是,有时候可能需要对相同的Python版本,在不同的项目中使用不同版本的软件包。

在这篇文章中,我们将介绍两个工具,即pyenv和virtualenv。前者用于管理不同的Python版本,后者用于管理不同的工作环境。有了这两个工具,Python相关的版本问题将不再是问题。

1. 使用pyenv管理不同的Python版本

安装不同的Python版本并不是一件容易的事情,在不同的Python版本之间来回切换更加困难,而且,多版本并存非常容易互相干扰。因此,我们需要一个名为pyenv的工具。pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。接下来我们就一起看一下pyenv的安装和使用。
pyenv/pyenv
我们直接从github上clone项目到本地,然后,分别执行以下命令进行安装即可:

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/home/lmx/.pyenv'...
remote: Counting objects: 14458, done.
remote: Compressing objects: 100% (8/8), done.
Receiving objects: 100% (14458/14458), 2.58 MiB | 541 KiB/s, done.
remote: Total 14458 (delta 1), reused 0 (delta 0), pack-reused 14449
Resolving deltas: 100% (9938/9938), done.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

安装完成以后,需要重新载入配置文件,或者退出以后重新登录,以使~/.bash_profile中的配置生效。笔者一般选择使用source命令重新载入配置文件,如下所示:

$ source ~/.bash_profile

至此,pyenv就安装完成了,我们可以通过下面的命令验证pyenv是否正确安装以及获取pyenv的帮助信息:
注意:
如果重新登录后,提示pyenv未安装,可以将.bash_profile中的信息写入到.bashrc中:

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ pyenv --help
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/yyuu/pyenv#readme

使用pyenv

我们通过pyenv的install命令,可以查看pyenv当前支持哪些Python版本,如下所示:

pyenv  install --list
Available versions:
  3.6.0
  3.6-dev
  3.7-dev
  ...

由于pyenv可以安装的Python版本列表非常长,所以,这里进行了省略。读者可以在自己电脑上安装pyenv,然后执行pyenv install –list命令。可以看到,pyenv不但可以安装不同的Python版本,而且还可以安装不同的Python实现,也可以安装最新版本的Python用以学习。

使用pyenv安装不同的Python版本:

pyenv install -v 3.6.0
pyenv install -v 2.7.13

查看当前系统中包含的Python版本:

$ pyenv versions
* system (set by /home/lmx/.pyenv/version)
  2.7.13
  3.6.0

由于我们安装了2个Python版本,加上我们系统自身的Python,当前系统中存在3个不同的Python版本。其中,输出结果前面的”*”表示当前正在使用的版本。我们也可以通过pyenv global选择不同的Python版本,如下所示:

$ pyenv global 3.6.0
$ pyenv versions
  system
  2.7.13
* 3.6.0 (set by /home/lmx/.pyenv/version)

$ python
Python 3.6.0 (default, Feb  8 2017, 15:53:33)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$ pyenv global 2.7.13
$ python
Python 2.7.13 (default, Feb  8 2017, 16:03:42)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

使用pyenv以后,可以快速地切换Python的版本。切换Python版本以后,与版本相关的依赖也会一起切换。因此,我们不用担心不同的版本在系统中是否会相互干扰。例如,切换Python版本以后,相应的pip也会跟着切换,所以不用担心自己用pip版本和Python版本不匹配的问题,如下所示:

$ pyenv global 3.6.0
$ pip --version
pip 9.0.1 from /home/lmx/.pyenv/versions/3.6.0/lib/python3.6/site-packages (python 3.6)
$ pyenv global 2.7.13
$ pip --version
pip 9.0.1 from /home/lmx/.pyenv/versions/2.7.13/lib/python2.7/site-packages (python 2.7)

如果想要删除Python版本,则使用uninstall命令。如下所示:

pyenv uninstall 2.7.10
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值