virtualenv
是python的一个第三方模块,用来配置独立的python环境,特别是在服务器端需要进行版本控制时使用,有些第三方库向前或向后兼容性很差,这时候可用针对不同的版本配置不同的python环境更为方便
一、安装
可以直接通过pip安装,也可以自行下载源码编译安装
1 | $ sudo pip install virtualenv |
安装完后需要连接到执行命令目录
1 | $ sudo ln -s /usr/local/lib/python2.7.12/bin/virtualenv /usr/bin/virtualenv |
在终端使用virtualenv -h
查看帮助
二、基本使用
我们可以使用virtualenv
创建一个独立的python环境,默认也会包含pip, easy_install, wheel等工具:
1 | $ virtualenv envname # 创建一个新的隔离环境,会安装Installing setuptools, pip, wheel...done. |
1. 常见命令参数
--system-site-packages
: 使用系统的全局的python库--no-site-packages
: 不使用系统的全局的python库(默认)(废弃)--download
: 从网上下载包预安装的包--no-download
: 使用本地包,不从网上下载,如果不存在会报错
更多参数见官网说明:https://virtualenv.pypa.io/en/stable/reference/#cmdoption--system-site-packages
2. 我们查看一下有哪些文件
1 | $ ls |
文件与python安装目录下的文件类似,即独立环境所使用的package和一些可执行程序
3. 激活并进入虚拟环境
使用下面命令激活当前的环境(这里用的是mac),之后使用的python环境就是刚创建的虚拟环境,命令行前面会带虚拟环境的名字:(envname)
1 | $ source bin/activate |
我们通过which查看一下当前环境下的python执行文件的路径,我们发现当前的环境变成了刚刚激活的路径,而不是系统的python路径了,而使用pip安装的路径包也会在这个环境的路径下
1 | (envname) localhost:envname zhengxiankai$ which python |
进入python交互解释器
1 | (envname) localhost:envname zhengxiankai$ python |
查看搜索路径
1 | >>> import sys |
4. 退出虚拟环境
使用完成之后通过deactivate
命令退出虚拟环境,前面的虚拟环境名(envname)
没有了,说明退出了
1 | (envname) localhost:envname zhengxiankai$ deactivate |
三、批量安装package
pip工具支持批量安装package,只需要把需要的包按照格式写在文件中,就可以自动安装,同时也支持导出,下面是从当前环境(envname)导出所有安装的包的配置到requirements.txt
文件中
1 | $ pip freeze > requirements.txt |
批量安装requirements.txt
文件中的所有包
1 | $ pip install -r requirements.txt |
这样在切换环境的时候安装依赖包就很方便了,不需要一个一个安装了
四、与Pycharm结合
Pycharm是python最常用的开发工具,当然也提供了virtualenv的支持,到设置里面的Project Interpreter
添加本地已经存在的虚拟环境,也可以直接创建,然后应用到工程即可
四、总结
virtualenv可以创建python的独立环境,可以包含一整套python的环境(除了外部依赖,如mysql等),特别是在服务器部署时可以连同环境一块部署,不需要为每一台服务器安装所有的库,而在多人开发过程中,为了保证环境的一致,也可以把独立环境也通过git维护,这样可以保证所有人的环境一致,而不用在所有的机器上配置