python中的虚拟环境

为什么需要虚拟环境?

和大多数编程语言一样,python有自己独特的下载、存储和解析包的方式。python存储和解析包的方式,有其自身的优势,但也导致了一些问题。

这些包有可能被安装在不同的路径下,例如:

大多数与系统相关的包存储在sys.prefix路径的子目录中。在Mac OS X上,您可以使用Python shell轻松找到sys.prefix指向的位置:

>>> import sys
>>> sys.prefix
'/Users/sunguangya/anaconda3'

使用easy_install或pip安装的第三方软件包通常放在site.getsitepackages指向的其中一个目录中,仍然可以使用python shell 轻松找到:

>>> import site
>>> site.getsitepackages()
['/Users/sunguangya/anaconda3/lib/python3.6/site-packages']

默认情况下,系统上的每个项目都将使用这些相同的目录来存储和检索站点包(第三方库)。

假如有两个项目:项目A和项目B,项目A需要第三方库C的1.0版本,项目B需要第三方库C的2.0版本。但是,对于python,在一个sitepackages目录下不可能有两个版本的第三方库。这是因为第三方库是依据名字进行保存的,不同版本的名字没有区别。这样,当一个任务需要同时运行项目A和项目B时,就无法正常运行。

这就需要虚拟环境工具venv

什么是虚拟环境?

Python虚拟环境的主要目的是为Python项目创建一个独立的环境。即每个项目都可以拥有自己的系统库和第三方库,而不管每个其他项目依赖哪些库。

在上面的例子中,我们只需要为项目A和项目B创建一个单独的虚拟环境。每个环境都能够依赖于他们自己选择的第三方库C的版本,而不依赖于其他版本。

python中的虚拟环境

在python3中已经自带创建虚拟环境的模块venv

首先创建一个新的目录:

$ mkdir python_venv
$ cd python_venv

然后,在这个目录下,创建一个虚拟环境env:

$ python3 -m venv env

为了使用此环境的包/资源,您需要“激活”它。为此,只需运行以下命令:

$ source env/bin/activate
(env) $

请注意您的提示现在以您的环境名称为前缀(env)。这是env当前处于活动状态的指示符,这意味着python可执行文件将仅使用此环境的包和设置。

我们可以通过执行deactivate返回到“system”状态:

(env) $ deactivate
$

现在你的shell会话恢复正常了,python命令引用了全局Python安装。

你可能感兴趣的:(python中的虚拟环境)