场景:假如当前有两个项目A和B,两个项目中都需要依赖requests库,但是需要的版本不一样,而默认情况下,不管哪个项目,使用的都是全局的Python环境
上述场景,造成的问题是,A和B两个项目,只能运行一个;如果运行另一个,必须安装与之匹配的库版本
解决方案:使用虚拟环境,创建一个完全独立的局部python环境,在此环境中安装所有与这个项目匹配的库即可。总之,一个项目,使用一个全局独立的“python环境”,互相之间,没有干扰。
目录
更加基于项目的虚拟环境管理(推荐使用包)
下面将介绍创建虚拟环境的三种包(即创建虚拟环境的三种不同方式)
虚拟环境的使用(创建的虚拟环境比较分散,不利于管理):
用到三方包:virtualenv
安装:pip install virtualenv
1.创建一个局部的隔离的虚拟环境
语法:virtualenv 虚拟环境名称
例如:virtualenv ENV
桌面新建文件夹pyqt5-->cmd进入命令框-->输入virtualenv ENV(创建名为ENV的虚拟环境)-->查看pyqt5文件夹可发现生成ENV的文件夹,下图为其目录结构
可选参数:-p 指明Python版本创建 到时候就用此版本的Python解释器来执行代码
默认是你安装virtualenv包的时候,所在的Python版本
例如:virtualenv -p C:\python36\python3.exe ENV
--system-site-packages 继承的系统的三方库,到时候,检索库的时候,也会到系统的三方库中查找,如果不加载此项,到时候只会在当前的虚拟环境中找(例如要引入requests包,但是当前虚拟环境没有,如果创建虚拟环境没用此参数,则会报错;如果用到此参数,将会去全局库中查找,若全局库中有,则不报错)
例如:virtualenv --system-site-packages ENV
2.激活虚拟环境
语法:cmd进入命令框--》进入到虚拟环境目录/scripts文件夹中
运行:activate.bat
在环境的激活状态下,后续所有的操作都是基于这个虚拟的python环境(包的安装卸载等等、代码的执行)
如果不激活创建的虚拟环境,则到时候会被安装在全局环境;激活后,则会安装在虚拟环境中
3.在激活状态下,想干啥干啥
4.退出虚拟环境
语法:进入到虚拟环境目录/scripts文件夹中
deactivate.bat
5.删除虚拟环境
直接删除虚拟环境文件夹
6.补充
以后,把项目给别人的时候,怎样保证项目在别人电脑上跑起来
解决:方案1:连同虚拟环境和项目一起拷贝给别人
方案2:
- 在虚拟环境中,冻结依赖需求文本
- 把项目和依赖需求文本打包进文件夹给别人,本例打包在my文件夹中
- 别人自己在本地创建一个新的虚拟环境,并根据依赖需求文本安装相关库,安装完成之后可运行
一个虚拟环境可以被多个项目使用,一个项目也可以使用多个虚拟环境
Pycharm使用虚拟环境
在file-->new project-->Pure Python
用此方法创建虚拟环境成功后,如果要新建py文件,在与虚拟环境文件同级的地方创建
集中式虚拟环境管理:
virtualenvwrapper-win:基于virtualenv开发的一个工具包
功能作用:可以将之前分散在各个路径下的虚拟环境集中到统一的路径下进行管理,从而方便各个虚拟环境之间的切换,更加方便的去使用vietualnev
文档说明:https://pypi.org/project/virtualenvwrapper-win/
使用说明:
安装:pip install virtualenvwrapper-win
1.创建虚拟环境
语法:mkvirtualenv 虚拟环境名称
作用效果:会创建在特定的文件夹中
windows下,默认在用户目录的Envs文件夹中
激活新建的虚拟环境
2.查看所有的虚拟环境
语法:lsvirtualenv
workon
作用效果:列出当下创建的所有
3.切换激活虚拟环境
语法:workon 虚拟环境名称
作用效果:激活指定的虚拟环境
4.关闭虚拟环境
语法:deactivate
作用效果:关闭当下所在的虚拟环境
5.删除虚拟环境
语法:rmvirtualenv 虚拟环境名称
作用效果:删除指定的虚拟环境
更加基于项目的虚拟环境管理(推荐使用包)
库名称:Pipenv
功能作用:pip + virtualenv
更加基于项目;使得我们更加关注于项目的管理,工具内部封装了以上两个功能
优势:不需要再分别使用pip virtualenv,直接使用Pipenv即可
会自动的帮助你创建虚拟环境,以及安装三方库
会自动的记录你项目依赖的所有第三方库
使用Pipfile和Pipfile.lock取代了requirement.txt
文档说明:http://docs.pipenv.org/en/latest/ 可在命令框输入Pipenv回车来查看帮助文档
使用说明:
安装:pip install pipenv(安装虚拟环境)
第一步:创建使用虚拟环境的项目
命令:新建项目--》cd到项目文件目录
pipenv --two(基于python2版本)
pipenv --three(基于python3版本)
查看相关信息:
查看项目位置:pipenv --where
查看虚拟环境位置:pipenv --venv
查看解释器信息:pipenv --py
查看帮助文档:pipenv
第二步:激活虚拟环境
cd 到项目中
pipenv shell(激活项目所对应的虚拟环境)
第三步:该干啥干啥
执行代码:python xxx.py (会使用虚拟环境)
安装包:
命令:pipenv install [ 三方库名]
作用效果:1.检测当前项目对应的虚拟环境是否存在,不存在则创建
2.在虚拟环境中安装指定的三方库
如果没有指定,则不安装
3.在项目目录下,通过pipfile和Pipfile.lock记录当下已经安装的三方库
注意:不要使用pip install 虽然在虚拟环境中安装对应的包
但是不会更新PIPfile和PIPfile.lock
查看包的依赖结构 pipenv graph
卸载包 pipenv uninstall 包名
第四步:退出虚拟环境
命令:exit
或者直接关闭shell窗口
第五步:删除虚拟环境
先cd到项目目录,然后输入以下命令
pipenv --rm
补充:以后上传项目(给别人)应该包含哪些文件?
1.包和模块源码 2.Pipfile和Pipfile.lock
别人拿到这些内容后,如何使用?
在命令框中切换到所收文件夹目录下,执行pipenv install将会自动识别文件并检索依赖信息,然后输入Pipenv shell来执行虚拟环境