1 问题
当我们拥有两个甚至多个项目A、B、C......,各个项目正常运行需求的python运行环境都不相同。而默认情况下,不管哪个项目,使用的都是全局的Python环境。上述情况,造成的问题就是,A、B、C等项目,只能运行一个;如果运行另一个,必须安装与之匹配的库版本。
2 解决思路
创建一个完全独立的局部python环境(或叫做虚拟环境)。在此环境中,安装所有与某个项目相匹配库即可。总之,一个项目,使用一个虚拟环境;互相之间,没有干扰。
3 具体解决步骤
3.1 安装第三方包virtualenv
当电脑里面有多个版本的python的时,可以指定版本来进行安装。代码见下:
pip install virtualenv
或者
python3 -m pip install virtualenv
3.2 virtualenv的简单应用
3.2.1 创建一个局部的隔离的虚拟环境
打开命令提示符,cd进入到项目myproject(必须根据自己的项目进行修改)所在路径,创建项目myproject的虚拟环境。
(1) 语法
virtualenv 虚拟环境名称
例如:virtualenv ENV
(2) 可选参数
(i) -p :指明Python版本创建,到时候就使用此版本的解释器,默认是你安装viretual 包的时候,用的python解释器
例如:virtualenv -p C:\Python27\python.exe ENV
(ii) --system-site-packages:继承系统的三方库。到时候,检索库的时候,也会到系统的三方库中查找,如果不加此项,到时候只会在当前的虚拟环境中找
例如:virtualenv --system-site-packages ENV
创建完成后,会在myproject文件夹下自动生成一个ENV文件夹,效果见下图:
ENV文件夹里面的内容见下图:
3.2.2 激活虚拟环境
(1) 语法
打开命令提示符,进入到虚拟环境目录/scripts文件夹中,输入activate.bat
(2) 界面效果
(3) 作用效果
在环境的激活状态,后续所有的操作都是基于这个虚拟的Python环境包的安装和卸载。代码的执行,比如:pip install 包名(如requests)
如果不激活创建的虚拟环境,到时候会被安装在全局Python环境中。激活后,则会安装在虚拟环境中。
3.2.3 在激活状态下的操作
操作三方库、执行py文件等等
注意:以上所有操作,均作用在被激活的虚拟环境中
3.2.4 退出虚拟环境
(1) 语法
进入到虚拟环境目录/scripts文件夹中,输入命令deactivate.bat
(2) 界面效果
(3) 作用效果
退出后,所有后续操作,又会再次的作用于全局的Python环境中
3.2.5 删除虚拟环境
直接把项目文件目录下的ENV文件夹删除即可。
更多使用命令见官网:https://virtualenv.pypa.io/en/latest/userguide/
4 补充
以后把项目给别人的时候,就可以连同虚拟环境和项目一起拷贝给别人。但是当虚拟环境非常大的时候,这种方法显然不实际。这就需要用到另一种方法了。
即在虚拟环境中,冻结依赖需求文本,把项目和依赖需求文本给别人。