Python 虚拟环境入门

已发表: 2022-11-07

在本文中,您将学习如何在 Windows 和 Linux 操作系统中开始使用 Python 中的虚拟环境。

当您开始在本地开发环境中处理多个项目时,您经常会遇到依赖问题。 为每个项目创建虚拟环境可以帮助您更好地管理依赖项和项目需求。

为了利用 Python 中虚拟环境的优势,让我们学习创建和激活虚拟环境。

什么是虚拟环境?

虚拟环境是包含项目代码和依赖项的隔离且独立的环境。

但是为什么要使用虚拟环境呢?

好吧,虚拟环境允许您为各种项目安装和使用相同库的不同版本。 使用虚拟环境还可以确保在两个或多个项目使用不同版本时不会发生重大更改。 让我们更详细地了解这一点。

在 Python 中安装包

Python 标准库附带了几个有用的模块,用于单元测试、与操作系统交互、处理日期和时间等等。

但是,在处理 Python 项目时,您通常需要安装由 Python 社区开发的其他包。 对于用于数据收集的网络抓取、机器学习和网络应用程序等应用程序尤其如此。

要安装和管理这些包,您可以使用 conda 或 pip。

每个项目都需要一组特定的软件包,您需要安装这些软件包。 但是,当您在本地计算机上安装开发环境中的所有包时,所有项目都共享全局安装的包。

本地开发环境

那么为什么这是一个问题呢?

好吧,您的开发环境中可能有 N 个包。 但是,您当前正在进行的项目可能只需要其中的 3 个。 当您的所有项目共享公共安装时,很难确定哪些项目需要哪些已安装的包——与每个项目相关的依赖项。

这种方法还有另一个限制。 假设您的项目库中有一个 Django 2.2 项目。 您决定开始使用 Django 4 的项目。因此,您在同一开发环境中安装了最新版本的 Django。

现有安装会发生什么?

它被您安装的 Django 版本删除并替换。 对于较新的稳定版本,某些功能可能已被弃用。 而且您早期的 Django 项目可能无法按预期工作。

版本差异

总结我们迄今为止的讨论:当包都安装在一个公共环境中时,依赖管理变得很困难,因为项目需要它们自己的一组库来运行。

虚拟环境如何工作

到目前为止,我们已经看到了与在全球开发环境中安装软件包相关的挑战(系统范围的安装)。 这促使我们了解虚拟环境如何解决这一限制。

当您为 Python 项目创建和激活虚拟环境时,您只能安装当前项目所需的那些包。

python-虚拟环境

回顾 Django 项目示例,使用虚拟环境,您可以同时运行 Django 2.2 和 Django 4 项目——没有任何冲突。 这是因为 Django 安装不再是系统范围的安装,而是仅限于各个项目的虚拟环境。

本质上:虚拟环境是包含项目代码和依赖项的隔离环境。

虚拟环境的优势

虚拟环境的优势

既然您已经了解了虚拟环境在 Python 中是如何工作的,那么让我们列举一下使用它们的优势:

  • 虚拟环境为各个项目提供了一个隔离的开发环境,允许我们只安装特定项目所需的包。
  • 由于项目的虚拟环境既独立又隔离,不同的项目可以使用同一个库的不同版本——取决于需求。 使用虚拟环境,您不必担心安装库和设置开发环境的系统权限。
  • 在虚拟环境中安装包后,您可以在 requirements.txt 文件中捕获项目的依赖项。 这允许其他开发人员复制项目的开发和环境,并使用单个命令安装所需的包。

创建虚拟环境的工具

创建虚拟环境的工具

到目前为止,您已经了解了虚拟环境的工作原理以及使用它们的优势。 让我们探索一些可用于在 Python 中创建和管理虚拟环境的流行工具。

#1。 虚拟环境

Virtualenv是用于为 Python 项目创建和管理虚拟环境的广泛使用的工具之一。 venv包中提供了virtualenv功能的一个子集。 但是,与venv相比, virtualenv包更快且可扩展。

#2。 Pipenv

使用 pipnev,您可以同时拥有virtualenv的虚拟环境功能和pip的包管理功能。 它使用管理 pipfiles 来管理虚拟环境内部的项目依赖项。

您可以直接在这个 Pipenv 游乐场上的浏览器中试用pipenv

#3。 康达

如果您使用 Python 的 Anaconda 发行版进行开发,那么您可以使用conda进行包管理和创建虚拟环境。

要了解更多信息,请查看有关使用 conda 管理环境的综合指南。

#4。 诗歌

Poetry 是一个包管理工具,可让您管理所有 Python 项目的依赖关系。 要开始使用 Poetry,您需要安装 Python 3.7 或更高版本。

#5。 文夫

如前所述, venv提供了virtualenv功能的一个子集,但它的优势在于它内置于 Python 标准库中,从 Python 3.3 开始。

它可以通过 Python 安装轻松获得——并且不需要安装外部包。 我们将在本教程中使用它来创建和使用虚拟环境。

如何在 Ubuntu 中创建 Python 虚拟环境

要学习本教程的其余部分,您需要在本地安装 Python 3。确保您运行的是 Python 3.5 或更高版本。

本节概述了在 Ubuntu Linux 机器中创建和激活虚拟环境的步骤。 同样的步骤也可以在其他 Linux 发行版上使用。

为了便于管理,我们先创建一个项目目录,然后cd进去; 我们将在这个目录中创建venv

 $ mkdir my_project $ cd my_project

为 Python 项目创建虚拟环境的一般语法是python3 -m venv <venv-name-or-path> 。 运行此命令后,将在当前工作目录中创建一个名为my_env的虚拟环境:

 $ python3 -m venv my_env

如何在虚拟环境中激活和安装包

创建虚拟环境后,您可以激活它并在其中安装所需的软件包。 要激活虚拟环境,您可以运行以下命令:

 $ source my_env/bin/activate

激活虚拟环境后,可以运行pip list命令来获取已安装包的列表:

 $ pip list
图像-3

到目前为止,我们还没有安装任何软件包,因此您应该能够在每个创建的虚拟环境中看到setuptoolspip (默认安装)。

在虚拟环境中安装pip可以让您安装特定项目所需的包; 这就是为什么每个项目都有一个独立的开发环境

现在您已经激活了虚拟环境,您可以使用 pip 在其中安装项目特定的包。 例如,让我们安装 Python requests,这是下载次数最多的 Python 包之一,它提供了几个有用的功能来发送 HTTP 请求以使用 Web API。

 $ pip install requests

安装 requests 库时,您会看到 requests 库连同它所需的所有包一起安装。

在 python 虚拟环境中安装库
 $ pip list
在 python 虚拟环境中查看库

您可以使用pip freeze命令并将输出重定向到 requirements.txt 文件,如下所示:

 $ pip freeze > requirements.txt

如果您检查当前项目目录的内容,您会看到已经创建了 requirements.txt 文件。

 $ ls # my_env requirements.txt

处理完项目后,您可以通过运行以下命令停用虚拟环境:

 $ deactivate

如何在 Windows 中创建 Python 虚拟环境

一般来说,Linux 环境是开发的首选。 如果您使用的是 Windows 机器,则可以考虑使用 Windows Subsystem for Linux (WSL) 设置 Ubuntu 终端环境以进行本地开发。

如果您使用的是 Windows 计算机,则可以使用 Windows PowerShell 或命令提示符并使用以下命令创建虚拟环境:

 > python -m venv <path-to-venv>

如何激活虚拟环境

在 Windows 机器上激活虚拟环境会有所不同,具体取决于您使用的是命令提示符还是 Windows PowerShell。

如果您在命令提示符下,请运行以下命令来激活虚拟环境:

 > <path-to-venv>\Scripts\activate.bat

或者,如果您使用的是 Windows PowerShell,则运行此命令将激活虚拟环境:

 > <path-to-venv>\Scripts\Activate.ps1

您可以在虚拟环境中安装所有必需的软件包。

要停用虚拟环境,您可以在命令提示符和 Windows PowerShell 上运行deactivate命令。

结论

在本文中,我们讨论了系统范围安装的限制以及它们如何使跨 Python 项目的依赖管理变得困难。 Python 中的虚拟环境提供了一种更好地管理依赖项的方法,同时为各个项目提供了隔离的开发环境。

在 Python 中用于创建和管理虚拟环境的广泛使用的工具中,您已经学习了如何使用venv——它内置在 Python 标准库中以创建和激活虚拟环境。

在项目的专用虚拟环境中,可以安装特定于项目的库版本。 然后可以在 requirements.txt 文件中捕获这些需求,从而允许其他开发人员轻松复制项目环境。

当你开始下一个 Python 项目时,一定要使用虚拟环境来进行更好的依赖管理。 快乐编码!