python深入之虚拟环境进阶

关于集中式虚拟环境

(1)virtualenv创建的虚拟环境的弊端:1.创建虚拟环境非常分散,每一个项目对应一个虚拟环境,有多少项目就要建立多少个文件夹;2.不同的虚拟环境之间的切换非常的复杂,要分别进入到不同虚拟环境中的特定目录下执行相关的文件才能激活和退出

(2)集中式虚拟环境--virtualenvwrapper-win模块:这个模块中的方法可以将创建的虚拟环境放在一起,集中进行管理,而且不同虚拟环境之间的切换非常的简单

关于集中式虚拟环境的使用

(1)创建虚拟环境

语法:mkvirtualenv 虚拟环境名称

效果:会在系统特定的目录中创建虚拟环境,且所有创建的虚拟环境都是放在同一个目录中,默认是用户名目录下的ENVS目录中。创建完成同时会激活对应的虚拟环境

创建其他虚拟环境:可以直接在一个虚拟环境激活的状态下去创建另外一个虚拟环境,并且创建好的同时激活该虚拟环境

(2)查看所有虚拟环境

语法:lsvietualenv和workon

效果:前者列出所有虚拟环境名称,后者是切换虚拟环境的操作,如果不在后面加上要切换的虚拟环境名称,则同时列出所有虚拟环境名称

(3)切换虚拟环境

语法:workon 虚拟环境名称

效果:快速在不同虚拟环境之间进行切换

(4)关闭虚拟环境

语法:deavtivate

效果:在激活的虚拟环境下执行该命令,可以关闭对应的虚拟环境

(5)删除虚拟环境

语法:rmvirtualenv 虚拟环境名称

效果:删除对应的虚拟环境文件夹,退出激活状态

关于基于项目的虚拟环境

(1)集中式虚拟环境的弊端:1.虚拟环境创建工具和三方包管理工具分开了,要分别使用virtualenv和pip两个工具;2.项目依赖的三方包记录文件时requirements.txt.文件,且这个文件是用户手动进行记录的,其中不免会发生更新不及时的问题;3.三方包中的各种模块之间的依赖关系不能得到体现

(2)基于项目的虚拟环境--pipenv:其更加基于项目进行管理,工具内部封装了virtualenv和pip两个工具的功能,可以对项目进行更加的紧凑的管理。其优势是1.不需要使用virtualenv和pip两个工具,直接使用pipenv即可实现上述两个工具的功能,且pipenv可以自动创建虚拟环境和安装三方包,自动记录三方包;2.这里使用pipfile和pipfile_lock替代了requirement.txt,可以实时对三方包进行更新

关于基于项目的虚拟环境的使用

(1)创建虚拟环境

语法:pipenv --two(使用python2版本解释器进行创建)/--three(使用python3版本解释器进行创建);查看虚拟环境相关文件位置pipenv --where(查看项目位置)/--venv(查看虚拟环境位置)/--py(查看解释器信息)

(2)激活虚拟环境

语法:pipenv shell

效果:系统shell上方显示栏会显示pipenv shell字样,代表虚拟环境激活

(3)激活后的操作

一.项目代码的操作

语法:python xx.py

效果:在虚拟环境中实现

二.三方包操作

1.安装包

语法:pipenv install 包名

效果:1.检测当前项目对应的虚拟环境是否存在,不存在则创建;2.虚拟环境下安装指定三方包,没有指定则不安装;3.在项目目录下通过pipfile和pipfile_lock文件记录安装好的三方包

注意:在这里不要使用pip install来安装,虽然可以在虚拟环境中安装对应的包,但是并不会记录到pipfile和pipfile_lock文件中,这样就做不到实时记录了

2.查看包

语法:pipenv graph

效果:可以查看项目三方包的依赖结构

3.卸载包

语法:pipenv uninstall 包名

效果:将对应的三方包卸载

(4)关闭和删除虚拟环境

一.关闭

语法:exit或者直接关闭系统shell

效果:退出虚拟环境的激活状态

二.删除

语法:pipenv --rm

效果:删除对应的虚拟环境

注意:要进到虚拟环境目录中,就可以删除对应名称的虚拟环境

(5)项目交接

一.交

语法:由于项目和记录三方包的两个文件直接在项目文件中,所以直接将整个项目文件发给对方即可

内容:项目源码、pipfile和pipfile_lock

二.接

语法:pipenv install

效果:接收到别人发过来的项目文件夹后,通过系统shell进入其中,直接执行上述命令,则python会自动在自己的电脑上创建对应的虚拟环境,并按照pipfile和pipfile_lock两文件中的内容进行三方包的安装

猜你喜欢

转载自blog.csdn.net/zx870121209/article/details/81585382