flask学习笔记(一)——使用pyenv、virtualenv管理python版本和工作环境

python版本有很多,python2和python3之间的差异可以说非常大,但是,由于各种原因,导致python2和python3还将长期的共存,而在实际工作中,我们时常会在python2和python3之间进行切换,这样我们就需要一个能对python版本进行管理的工具,pyenv能够很好的胜任这一工作,同时,它还能对我们所需要的包进行管理。

除了,管理版本的需求外,有时候,我们还需要对我们工作的环境进行管理,以适应不同的开发工作,这样,我们就需要另外一个工具了,那就是virtualenv。

今天先对这两个工具进行简单的介绍。

pyenv

pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。接下来我们就一起看一下pyenv的安装和使用。

$ 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 ~/.bash_profile

至此,pyenv就安装完成了,我们可以通过下面的命令验证pyenv是否正确安装以及获取pyenv的帮助信息:

$ pyenv --help
Usage: pyenv  []

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 ' for information on a specific command.
For full documentation, see: https://github.com/yyuu/pyenv#readme

pyenv的一些命令

通过pyenv install命令查看pyenv当前支持哪些Python版本

通过pyenv versions查看当前系统中包含的Python版本

当系统中存在多个不同的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版本以后,与版本相关的依赖也会一起切换。因此,我们不用担心不同的版本在系统中是否会相互干扰。

通过pyenv uninstall命令除不需要的Python版本

virtualenv

virtualenv本身是一个独立的项目,用以隔离不同项目的工作环境。例如,用户lmx希望在项目A中使用Flask 0.8这个版本,与此同时,又想在项目B中使用Flask 0.9这个版本。如果我们全局安装Flask,必然无法满足用户的需求。这个时候,我们就可以使用virtualenv。

读者需要注意pyenv和virtualenv的区别。pyenv用以管理不同的Python版本,例如,你的系统工作时使用Python 2.7.13,学习时使用Python 3.6.0。virtualenv用以隔离项目的工作环境,例如,项目A和项目B都是使用Python 2.7.13,但是,项目A需要使用Flask 0.8版本,项目B需要使用Flask 0.9版本。我们只要组合pyenv和virtualenv这两个工具,就能够构造Python和第三方库的任意版本组合,拥有了很好的灵活性,也避免了项目之间的相互干扰。

virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。

安装和使用pyenv-virtualenv插件如下所示:

$ git clone https://github.com/yyuu/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
Cloning into '/home/lmx/.pyenv/plugins/pyenv-virtualenv'...
remote: Counting objects: 1860, done.
remote: Total 1860 (delta 0), reused 0 (delta 0), pack-reused 1860
Receiving objects: 100% (1860/1860), 530.62 KiB | 213 KiB/s, done.
Resolving deltas: 100% (1274/1274), done.
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
与安装pyenv类似,安装完成以后需要重新载入配置文件,或者退出用户再登录,以使得配置文件生效:
$ source  ~/.bash_profile
$ pyenv help virtualenv
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] 
       pyenv virtualenv --version
       pyenv virtualenv --help

  -f/--force       Install even if the version appears to be installed already

pyenv-virtualenv使用

有了pyenv-virtualenv以后,我们可以为同一个Python解释器,创建多个不同的"工作环境"。例如,我们新建两个工作环境:

$ pyenv virtualenv 2.7.13 first_project
$ pyenv virtualenv 2.7.13 second_project

可以使用virtualenvs子命令查看工作环境:

$ pyenv virtualenvs
  2.7.13/envs/first_project (created from /home/lmx/.pyenv/versions/2.7.13)
  2.7.13/envs/second_project (created from /home/lmx/.pyenv/versions/2.7.13)
  first_project (created from /home/lmx/.pyenv/versions/2.7.13)
  second_project (created from /home/lmx/.pyenv/versions/2.7.13)

创建完工作环境以后,可以通过activate和deactivate子命令进入或退出一个工作环境。进入工作环境以后,左边的提示符会显示你当前所在的工作环境,以免因为环境太多导致误操作。

在不同的工作环境安装不同的Flask版本:

$ pyenv activate first_project
(first_project) $ pip install flask==0.8
(first_project) $ pyenv deactivate
$ pyenv activate second_project
(second_project) $ pip install flask==0.9

使用pyenv virtualenv-delete命令删除虚拟环境

使用pyenv和python-virtualenv插件,我们就能够自由地在不同的版本之间进行切换,相比管理Python版本,不但节省了时间,也避免了工作过程中的相互干扰。

你可能感兴趣的:(flask)