翻译: Python虚拟环境Virtual Environments完全指南

发布时间:2024年01月05日

在这个教程中,我们将学习关于Python虚拟环境,使用虚拟环境的好处,以及如何在虚拟环境中工作。

完成本教程后,您将了解以下内容:

  • Python虚拟环境是什么
  • 在虚拟环境中工作的好处
  • 如何创建、激活、停用和删除虚拟环境
  • 如何在虚拟环境中安装软件包并在其他系统上复制它们
  • 如何在VS Code中使用Python虚拟环境

如果您需要在Mac上安装Python,请参考教程在Mac上安装Python
注意:本教程主要针对macOS和Linux用户;但是,Windows用户也应该能够跟着做。

1. Python虚拟环境是什么?

Python虚拟环境由两个基本组件组成:虚拟环境运行的Python解释器和包含在虚拟环境中安装的第三方库的文件夹。这些虚拟环境与其他虚拟环境隔离开来,这意味着在虚拟环境中安装的依赖项的任何更改都不会影响其他虚拟环境或系统范围的库的依赖关系。因此,我们可以创建具有不同Python版本的多个虚拟环境,以及不同版本的库或相同库的不同版本。
在这里插入图片描述
上图说明了当我们创建多个 Python 虚拟环境时,系统上的内容。如上图所示,虚拟环境是一个文件夹树,其中包含特定的 Python 版本、第三方库和其他脚本;因此,系统上的虚拟环境数量没有限制,因为它们只是包含一些文件的文件夹。

2. 为什么 Python 虚拟环境很重要?

当我们在同一台机器上有各种 Python 项目时,Python 虚拟环境的重要性就变得显而易见了,这些项目依赖于相同包的不同版本。例如,假设在两个使用 matplotlib 包的不同数据可视化项目上工作,一个使用 2.2 版,另一个使用 3.5 版。这将导致兼容性问题,因为 Python 不能同时使用同一包的多个版本。另一个放大了使用 Python 虚拟环境重要性的用例是,当您在托管服务器或生产环境中工作时,由于特定要求而无法修改系统范围的包。

Python 虚拟环境创建隔离的上下文,以将不同项目所需的依赖项分开,以便它们不会干扰其他项目或系统范围的包。基本上,设置虚拟环境是隔离不同 Python 项目的最佳方式,尤其是当这些项目具有不同且相互冲突的依赖项时。作为对新 Python 程序员的建议,始终为每个 Python 项目设置一个单独的虚拟环境,并在其中安装所有必需的依赖项——永远不要全局安装包。

3. 如何使用 Python 虚拟环境

到目前为止,我们已经了解了什么是虚拟环境以及为什么需要它们。在本教程的这一部分中,我们将学习如何创建、激活和(通常)使用虚拟环境。让我们开始吧!

3.1 创建 Python 虚拟环境

首先创建一个项目文件夹,并在其中创建一个虚拟环境。为此,请打开终端应用程序,编写以下命令,然后按回车键。

$ mkdir alpha-prj

现在,使用 venv 命令在项目文件夹中创建一个虚拟环境,如下所示:

$ python3 -m venv alpha-prj/alpha-venv

注意有两种用于设置虚拟环境的工具,virtualenvvenv,我们几乎可以互换使用它们。virtualenv 支持较旧的 Python 版本,需要使用 pip 命令进行安装。相比之下,venv 仅与 Python 3.3 或更高版本一起使用,并包含在 Python 标准库中,无需安装。

3.2 激活 Python 虚拟环境

若要激活在上一步中创建的虚拟环境,请运行以下命令。

$ source alpha-prj/alpha-venv/bin/activate

正如您在激活虚拟环境后所看到的,其名称显示在终端提示符开头的括号中。运行 which python 命令是确保虚拟环境处于活动状态的另一种方法。如果我们运行此命令,它会显示 Python 解释器在虚拟环境中的位置。让我们检查一下虚拟环境中的位置。

(alpha-venv) $ which python
/Users/lotfinejad/alpha-prj/alpha-venv/bin/python

很高兴知道虚拟环境的 Python 版本与用于创建环境的 Python 版本相同。让我们检查一下虚拟环境中的 Python 版本。

(alpha-venv) $ python —version
Python 3.10.1

由于我使用 Python 3.10 来设置虚拟环境,因此虚拟环境使用完全相同的 Python 版本。

3.3 在 Python 虚拟环境中安装软件包

我们现在处于一个隔离的虚拟环境中,默认情况下只安装了 pipsetup tools。让我们通过运行 pip list 命令来检查虚拟环境中预安装的软件包。

(alpha-venv) $ pip list
Package    Version
---------- -------
pip        21.2.4
setuptools 58.1.0

在我们想使用 pip 安装任何软件包之前,让我们将其升级到最新版本。由于我们在虚拟环境中工作,因此以下命令仅在此环境中升级 pip 工具,而不会在其他虚拟环境或系统范围内升级。

(alpha-venv) $ alpha-prj/alpha-venv/bin/python3 -m pip install --upgrade pip

让我们重新运行 pip list 命令以查看更改。

(alpha-venv) $ pip list
Package    Version
---------- -------
pip        21.3.1
setuptools 58.1.0

很明显,pip21.2.4 版本更新到 21.3.1。现在,让我们将 pandas 包安装到环境中。在安装软件包之前,您需要确定要安装的版本。如果要安装最新版本,只需使用以下命令即可:

(alpha-venv) $ python3 -m pip install pandas

但是,如果要安装特定版本的软件包,则需要使用以下命令:

(alpha-venv) $ python3 -m pip install pandas==1.1.1

现在,让我们看看如何告诉 pip 我们将安装 1.2 版本之前的任何版本的 pandas

(alpha-venv) $ python3 -m pip install 'pandas<1.2'

此外,我们可以要求 pip0.25.3 版本之后安装 pandas 包,如下所示:

(alpha-venv) $ python3 -m pip install 'pandas>0.25.3'

在前面的命令中,我们将包规范放在引号之间,因为大于 > 和小于 < 符号在命令行 shell 上具有特殊含义。这两个命令都将安装与给定约束匹配的最新版本的 pandas 包。但是,最佳做法是指定具有确切版本号的包。

让我们回顾一下环境中已安装的软件包列表。

(alpha-venv) $ pip list
Package         Version
--------------- -------
numpy           1.22.0
pandas          1.3.5
pip             21.3.1
python-dateutil 2.8.2
pytz            2021.3
setuptools      58.1.0
six             1.16.0

安装 pandas 时,NumPy 和其他三个软件包将作为 pandas 软件包的先决条件自动安装。

3.4 保存和恢复已有的 Python 虚拟环境

重现虚拟环境是很常见的。假设你的同事将从事你已经工作了数周的同一个项目。她需要在系统上的虚拟环境中安装具有正确版本的完全相同的软件包。要创建相同的环境,您首先需要使用 pip freeze 命令列出项目虚拟环境中安装的所有依赖项。

(alpha-venv) $ pip freeze
numpy==1.22.0
pandas==1.3.5
python-dateutil==2.8.2
pytz==2021.3
six==1.16.0

pip freeze 的输出与 pip list 非常相似,但它以正确的格式返回环境中安装的软件包列表,以使用准确的软件包版本重现环境该项目需要。下一步是将包列表导出到 requirements.txt 文件中。为此,请运行以下命令:

(alpha-venv) $ pip freeze > requirements.txt

上面的命令在当前文件夹中创建一个名为 requirements.txt 的文本文件。 requirements.txt 文件包含所有软件包及其确切版本。我们来看看文件内容。

$ cat requirements.txt
numpy==1.21.5
pandas==1.3.5
python-dateutil==2.8.2
pytz==2021.3
six==1.16.0

干得好,您已经创建了一个 requirements.txt,您可以将其分发给您的同事,以便在她的系统上重现相同的虚拟环境。现在,让我们看看她应该如何重现虚拟环境。这很简单。她首先需要创建一个虚拟环境并激活它,然后运行 ??pip install -r requirements.txt 命令来安装所有所需的软件包。

她将运行以下三个命令:

$ python3 -m venv prj/venv
$ source prj/venv/bin/activate
(venv) $ pip install -r requirements.txt

最后一个命令将在您的同事正在创建的虚拟环境中安装 requirements.txt 中列出的所有软件包。因此,如果她在她这边运行 pip freeze 命令,她会获得与您版本相同的软件包。另一个需要考虑的相关点是,如果要将项目添加到 Git 存储库,切勿将其虚拟环境文件夹添加到存储库。您唯一需要添加的是 requirements.txt 文件。

注意 Python 项目文件夹包含在虚拟环境中运行的源代码。另一方面,虚拟环境是一个包含 Python 解释器、包和工具(如 pip)的文件夹。因此,最佳实践是将它们分开,并且永远不要将项目文件放在虚拟环境文件夹中。

3.5 停用 Python 虚拟环境

使用完虚拟环境后,或者想要切换到另一个虚拟环境时,可以通过运行以下命令来停用环境:

(alpha-venv) $ deactivate

3.6 删除Python虚拟环境

如果要删除虚拟环境,只需删除其文件夹即可,无需卸载。

$ rm -rf alpha-prj/alpha-venv

4. 如何在 Visual Studio Code 中使用 Python 虚拟环境

在本节中,我们将逐步介绍如何在 VS Code 中使用 Python 虚拟环境。首先,确保您已创建并激活虚拟环境。现在导航到终端中的项目文件夹,然后运行以下命令:

(alpha-venv) alpha-prj $ code .

上面的命令将在 VS Code 中打开项目文件夹。如果上面的命令不起作用,请打开 VS code,按 command + shift + P,打开命令面板,输入 shell 命令并选择 在 PATH 中安装“code”命令。现在,创建一个 Python 文件,并将其命名为 my_script.py。最后一步是使用 Python 选择虚拟环境:从命令面板中选择解释器命令。为此,请按 Command + shift + P,然后键入 Python,然后选择选择解释器。

Python:选择解释器命令显示所有可用环境。下图是我们需要选择的环境。

在这里插入图片描述
此时,如果您在 VS Code 中打开集成终端,您将看到虚拟环境处于活动状态,您可以在其中安装任何包。

在本教程中,我们学习了Python虚拟环境如何避免不同项目或系统范围内的依赖项之间的冲突。此外,我们还学习了如何通过在这些独立的环境之间切换来处理具有不同依赖关系的不同项目。

参考

https://www.dataquest.io/blog/a-complete-guide-to-python-virtual-environments/

文章来源:https://blog.csdn.net/zgpeace/article/details/135400625
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。