虚拟环境有什么意义?
虚拟环境可以对项目依赖环境进行有效隔离。
打个比喻,现在有一个 Django 项目,使用的 Django 版本是1.8,但是系统的 Django 版本已经是更加新的1.11,如果使用系统的环境来运行项目,可能导致很多不兼容,于是,这个问题就可以使用一个虚拟环境来解决,使用 virtualenv
来创建一个只给这个项目运行的开发环境,既可以保证项目的正常运行,也方便了之后移植项目。
为什么选择pyenv
相信很多Python开发者都习惯使用virtualenv
来创建自己的虚拟环境,这没什么问题,笔者也是这么来用的。因为在开发过程无需管理自己的Python版本,也无需管理自己的虚拟环境,常用的pycharm
这些工具都可以在创建项目时自动来生成一个虚拟的项目环境。如果是线上运行了多个不同Python版本的服务,有的2.6,有的2.7,还有一些3的各个版本。这是就牵扯到虚拟环境的管理工作。pyenv
是在virtualenv
的上层做了封装,所以拥有virtualenv
的全部功能。在易用性方面也做的很好。下面是笔者常用的一些操作方法。
Pyenv脚本安装
1 | # curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash |
执行完成后需要加入变量到用户配置文件:
1 | [root@easydevops ~]# tail -4 .bash_profile |
Pyenv
基本使用
pyenv install 安装Python
1 | [root@easydevops ~]# pyenv install 3.4.2 #直接指定python的版本号即可. |
pyenv virtualenv 创建虚拟环境
1 | [root@easydevops ~]# pyenv virtualenv 3.4.2 jump |
关联虚拟环境到本地目录
1 | [root@easydevops ~]# pyenv local jump |
列出本机可用的Python版本和已经创建的虚拟环境
1 | [root@easydevops ~]# pyenv versions |
列出可安装的Python版本
1 | [root@easydevops ~]# pyenv install -l |
使用帮助
1 | [root@easydevops ~]# pyenv help <command> |
管理虚拟环境中依赖包
依赖包的管理使用python包管理工具pip, pip支持把项目所需的依赖包列出并批量安装的功能。
使用方式如下:
导出依赖包
1 | [root@easydevops ~]# cd jump |
需要注意的地方:
指定生成文件的目录
文件生成之后,有时候需要调整安装包的顺序,例如一个安装包是依赖另一个的,则需要把依赖包放在靠前的位置
如果想安装某个包的最新版,则把==及后面的版本信息删除即可
复制项目环境
首先新建一个虚拟环境,然后把当前位置切换到需求文件所在目录下,然后在新建的虚拟环境中运行以下命令就可以安装需求文件中所有的依赖库,相当于复制了一个虚拟环境。
1 | [root@easydevops ~]# pip install -r requirements.txt |