首页 > 技术文章 > 关于python的Virtualenv

0patrick 2021-01-06 14:33 原文

 

参考链接:

https://www.jianshu.com/p/6d92b7a01856

https://blog.csdn.net/u012206617/article/details/90294421

功能说明

在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰,如下所示。 

因为python2和python3的不同,因此也有了两种pip和pip3两种python包安装工具,而两种工具安装的virtualenv也是不相同的,py2安装的virtualenv虚拟化出来的python运行环境是python2的,py3安装的virtualenv默认虚拟化环境则是python3的。

安装

easy_install安装

[root@Tiven-CentOS]~# easy_install virtualenv

pip安装

[root@Tiven-CentOS]~# pip install virtualenv

创建环境

使用virtualenv命令

[root@Tiven-CentOS]~# virtualenv env  
Using base prefix '/usr/share/python3'
New python executable in /root/env/bin/python3.5
Also creating executable in /root/env/bin/python
Installing setuptools, pip, wheel...done.

新建一个名为‘env’的虚拟环境,并在当前目录下新建同名文件夹

virtualenv拷贝了Python可执行文件的副本,并创建一些有用的脚本和安装了项目需要的软件包,你可以在项目的整个生命周期中安装/升级/删除这些包。 它也修改了一些搜索路径,例如PYTHONPATH,以确保:

当安装包时,它们被安装在当前活动的virtualenv里,而不是系统范围内的Python路径。

当import代码时,virtualenv将优先采取本环境中安装的包,而不是系统Python目录中安装的包。

还有一点比较重要,在默认情况下,所有安装在系统范围内的包对于virtualenv是可见的。 这意味着如果你将simplejson安装在您的系统Python目录中,它会自动提供给所有的virtualenvs使用。 这种行为可以被更改,在创建virtualenv时增加 --no-site-packages 选项的virtualenv就不会读取系统包,如下:

[root@Tiven-CentOS]~# virtualenv env --no-site-packages

激活环境

使用source命令执行虚拟环境目录中bin/activate文件,将激活虚拟环境,命令行前出现(环境名)表示已在虚拟环境中

[root@Tiven-CentOS]~# source env/bin/activate #激活并使用虚拟环境
(env) [root@Tiven-CentOS]~# deactive

退出环境

执行命令deactivate退出虚拟环境

[root@Tiven-CentOS]~# source env/bin/activate
(env) [root@Tiven-CentOS]~# deactivate  退出虚拟环境
[root@Tiven-CentOS]~#

推荐阅读