随着项目的复杂度和规模的扩展,不同的库/包很容易引起冲突,而利用Python 2和Python 3中的虚拟环境来管理Python项目,可以有效地处理相关的冲突。
0.导引
在Python受到开发人员欢迎的所有原因中,最大的原因之一是它对第三方包的广泛和不断扩展的选择。从数据提取和格式化到高速数学和机器学习,各种方便的工具包只需导入或pip安装即可。
但是,当这些方案互不友好时,会发生什么呢?当不同的Python项目需要相同外接程序的竞争版本或不兼容版本时,您该怎么办?这就是Python虚拟环境发挥作用的地方。
您可以在python2和python3中创建和使用虚拟环境,尽管两者实现的工具不同。Virtualenv是python2的首选工具,而venv则在python3中处理这个任务的工具。
1.何为Python虚拟环境
虚拟环境是一种拥有多个并行的Python解释器实例的方法,每个实例都有不同的包集和不同的配置。每个虚拟环境都包含Python解释器的一个独立副本,包括其支持的实用程序的副本。
每个虚拟环境中安装的包只能在该虚拟环境中看到,而不能在其他环境中看到。即使是带有平台依赖二进制文件的大型复杂包,也可以在虚拟环境中相互隔离。
虚拟环境有几个常见的使用场景:
没有人说不能简单地将Python库解压缩到项目的子文件夹中并以此方式使用它。同样,您可以下载Python解释器的一个独立副本,将其解压缩到一个文件夹中,并使用它运行专用于它的脚本和包。
但是管理这些拼凑在一起的项目很快就变得困难了。只是一开始看起来更容易。使用具有二进制组件或依赖于复杂的第三方依赖关系的包可能是一场噩梦。最好的长期解决方案是使用Python的原生机制来创建和使用虚拟环境。
2.Python 3中的虚拟环境
Virtualenv已经被证明是无数Python开发人员不可或缺的一部分,但它并不是Python标准库的一部分。Python 3有用于虚拟环境的本机工具,这使得整个过程非常简单。
2.1创建虚拟环境
要在给定目录中创建虚拟环境,在终端命令行中输入:
python3 -m venv /path/to/directory
(注意,如果您的系统识别python为默认的python3解释器,那么您可以使用python而不是python3。)
设置虚拟环境的整个过程可能需要一到两分钟。当它完成时,您应该有一个包含几个子目录的目录。最重要的子目录是Unix上的bin或Windows上的Scripts,在这里您可以找到用于虚拟环境的Python解释器及其实用程序的副本。
请注意,因为每个虚拟环境都包含自己的Python解释器副本,所以它可能相当大。在Windows和Linux上,Python 3.6虚拟环境将消耗大约23 MB的磁盘空间。
2.2激活虚拟环境
在使用这个虚拟环境之前,需要显式地激活它。激活使虚拟环境在会话期间成为默认的Python解释器。
根据所使用的操作系统和命令shell,需要使用不同的语法来激活虚拟环境。这里介绍如下:
请注意,激活的环境仅适用于它被激活的上下文。例如,如果您启动了PowerShell的两个实例A和B,并且只激活实例A中的虚拟环境,那么该环境将只应用于A。它不会应用于其他任何地方。
2.3配置和使用虚拟环境
一旦激活了新的虚拟环境,就可以使用pip包管理器为其添加和更改包。在Windows上,pip位于虚拟环境的Scripts子目录中,在Unix操作系统上,pip位于bin子目录中。
如果你已经熟悉了pip的工作方式,就可以了。在虚拟环境中也是一样的。只要确保您使用的是pip实例,它在它被激活的上下文中管理虚拟环境的包——例如 bash会话或Windows CLI/PowerShell会话。如果希望验证是否使用了正确的pip和正确的虚拟环境,则键入pip -V,然后查看它显示的路径是否指向虚拟环境的一个子目录。
要使用您创建的虚拟环境来运行Python脚本,只需在激活Python的上下文中从命令行调用它。
2.4停用虚拟环境
当使用完虚拟环境后,您可以终止正在使用它的会话。如果希望继续在该环境中工作,但使用默认的Python解释器,可以在提示符处键入deactivate。在命令提示符下的Windows用户需要从脚本子目录中运行deactivate.bat,但是Unix用户和运行PowerShell的Windows用户可以在任何目录中简单地输入deactivate.bat。
2.5删除虚拟环境
虚拟环境是自包含的,与项目之外无所关系。当不再需要虚拟环境时,可以删除它的目录。
3.Python 2的虚拟环境
在Python 2中,虚拟环境不是该语言的原生特性。相反,您需要安装第三方库来创建和管理虚拟环境。
这些项目中最流行、最广泛使用的是virtualenv,它负责创建目录结构并将所需的文件复制到虚拟环境中。要安装virtualenv,只需使用pip install virtualenv。要用它创建一个虚拟环境目录,输入virtualenv /path/to/directory 即可。激活和停用虚拟环境的工作方式与Python 3中的虚拟环境相同(见上文)。
4.Jupyter notebook中使用虚拟环境
如果您正在使用Jupyter notebooks(即IPython笔记本),并且已经在系统范围内安装了Jupyter,那么可以创建虚拟环境并激活它。然后,从虚拟环境目录运行pip install ipykernel,为IPython添加所需的组件。最后,运行ipython kernel install —user —name=<project_name>,其中project_name是希望与特定项目关联的名称。从那里,应该就能够启动Jupyter并切换到安装在虚拟环境中的IPython内核了。
5.小结
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!