目录
为什么要安装虚拟环境
如果我们要同时开发多个应用程序的话,那么这些应用程序都会公用一个python,如果A应用使用的是flask 1.1和python3进行开发的,而B应用是通过flask2.3和python3开发的。这种情况下,每个应用都需要各自“独立”的运行环境。
virtualenv就是用来为一个应用创建一套“隔离”的python运行环境。虚拟环境的数量没有限制,可以使用virtualenv或者pipenv等工具创建多个虚拟环境
virtualenv和pipenv
virtualenv
virtualenv
是目前最流行的python虚拟环境配置工具。它不仅同时支持python2和python3,而且可以为每个虚拟环境指定python解释器,并选择不继承基础版本的包
优点
1、使不同python应用的开发环境互相独立
2、开发环境升级不影响其它应用的开发环境,也不会影响全局的环境。因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境中进行pip install时,只会安装到选择的虚拟环境中
3、它可以防止系统中出现包管理混乱和版本的冲突
pipenv
pipenv是pipfile主要倡导者、requests作者Kenneth Reitz写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理python多个环境,各种第三方包及模块
1、pipenv继承了pip、virtualenv两者的功能,且完善了两者的一些缺陷
2、过去用virtualenv管理requirements.txt文件可能会有问题,pipenv使用pipfile和pipfile.lock,后者存放包的依赖关系,查看依赖关系十分方便
3、各个地方使用了哈希校验,无论安装还是卸载包都十分安全。且会自动公开安全漏洞
4、通过加装.env文件简化开发工作流程
5、支持python2和python3,在各个平台的命令都是一样的
virtualenv
安装虚拟环境
- 安装 virtualenv
- 安装虚拟环境管理包 virtualenvwrapper-win
pip install virtualenv
pip intall virtualenvwrapper-win
如果安装时,安装失败:
那么则需要加上下载源:pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
--trusted-host pypi.douban.com
是为了获得ssl证书的认证
-
创建一个存放虚拟环境的目录(建议命名为virtualenv)
-
配置环境变量(变量名:WORKON_HOME,值:上面创建的目录路径)
检查
打开cmd,输入:workon
虚拟环境的一些命令
workon 列出所有的虚拟环境
workon [name] 进入指定的虚拟环境
deactivate 退出当前的虚拟环境
mkvirtualenv [name] 创建虚拟环境
rmvirtualenv [name] 删除虚拟环境
创建成功会自动进去虚拟环境,创建后,会在virtualenv目录下看到该虚拟环境
如果本地有python2和python3,可以通过指令参数 -p 指定所创建的虚拟环境的python版本
mkvirtualenv -p python2.7 [名称]
虚拟环境安装包
虚拟环境中安装对应的依赖包,进入虚拟环境直接使用pip install进行安装
虚拟环境卸载包
虚拟环境中卸载对应的依赖包,进入虚拟环境直接使用pip uninstall进行安装
卸载时不会将安装时所携带的依赖包一块卸载
pipenv
安装
pip install pipenv
通过命令pipenv --version
检查是否安装成功
创建虚拟环境
- 首先创建文件夹
mkdir py3env
- 然后进入到文件夹
cd py3env
- 再初始化虚拟环境
pipenv install
。如果要指定python版本则使用指令--python VERSION
创建好虚拟环境之后会生成:一个Pipfile文件和一个Pipfile.lock
项目提交时,将Pipfile和Pipfile.lock文件一并提交,待其他开发克隆下载,根据此Pipfile运行命令pip install --dev
生成自己的虚拟环境
Pipfile.lock文件是通过hash算法将包的名称和版本及其依赖关系生成哈希值,可以保证包的完整性
1、将url处的地址换成:https://pypi.douban.com/simple,国内源下载地址,下载速度会快很多
2、[packages]记录该虚拟环境所安装的所有第三方安装包
3、[dev-packages]记录该开发环境下所安装的所有第三方安装包
pipenv管理模块和包
- 在虚拟环境中安装模块或者包,pipenv install 包名(注意:在当前项目路径下执行以上命令)
通过 --dev指明只安装在开发环境中(开发环境是你当前开发的环境,生产环境是上线部署的实际环境)
在安装时,指定–dev参数,则安装在[dev-packages]下;若安装时不指定该参数,则安装在[packages]下面 - 卸载虚拟环境的模块包 pipenv uninstall 包名
- 查看安装包及依赖关系 pipenv graph
- 生成requirements.txt文件 pipenv lock -r --dev > requirements.txt
- 通过requirements.txt安装环境 pipenv install -r requirments.txt
卸载包使用命令pipenv uninstall 包名
使用这种方法卸载对应的包之后,会更新虚拟环境下对应的记录文件。上传到生产环境,恢复运行环境时不会有对应的依赖包
因为pipenv是对pip、virtualenv进行封装的,底层还是virtualenv,所以也会在workon路径下默认生成一个虚拟环境
pipenv的相关使用命令
pipenv --rm
删除虚拟环境
pipenv --where
列出本地工程路径
pipenv --venv
列出虚拟环境路径
pipenv --py
列出虚拟环境的python解释器信息
pipenv graph
查看包依赖
pipenv lock
生成lock文件
pipenv --shell
激活虚拟环境
exit
退出虚拟环境
导出requirements.txt文件
requirements.txt文件,里面记录了当前程序的所有依赖包及版本号,其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖
导出当前环境到requirements.txt
pip freeze > requirements.txt
使用requirements.txt恢复环境
pip install -r requirements.txt