Python 虚拟环境入门

本文将向你展示如何在 Windows 和 Linux 操作系统中开始运用 Python 虚拟环境。

在本地开发中同时处理多个项目时,依赖问题会经常出现。为每个项目建立独立的虚拟环境,能更有效地管理依赖关系和项目需求。

为了充分利用 Python 虚拟环境的优势,让我们一起学习如何创建和激活它们。 👩🏽‍💻

什么是虚拟环境?

虚拟环境是一个隔离、独立的环境,包含了特定项目的代码和依赖项。

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

这是因为虚拟环境允许你为不同的项目安装和使用同一个库的不同版本。 虚拟环境还能避免在多个项目使用不同版本库时可能产生的冲突。 让我们来深入了解一下。

在 Python 中安装包

Python 标准库自带许多实用的模块,用于单元测试、与操作系统交互、处理日期和时间等任务。

但是,在实际的 Python 项目中,你通常需要安装由 Python 社区开发的额外包,尤其是在数据抓取、机器学习和网络应用等领域。

你可以使用 conda 或 pip 来安装和管理这些包。

每个项目都需要一组特定的软件包。 当你在本地机器上安装所有包时,所有项目会共享全局安装的包。

这会带来什么问题?

你的开发环境中可能存在很多包,但当前的项目可能只需要其中几个。 当所有项目共享相同的安装时,很难区分哪些项目需要哪些包,以及项目之间的依赖关系。

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

已有的安装会怎样?

它将被你新安装的 Django 版本覆盖。 对于较新的稳定版本,某些功能可能已被弃用,而你之前的 Django 项目可能会无法正常工作。

总结一下:当所有包都安装在同一个全局环境中时,依赖管理变得复杂,因为每个项目都需要自己的一套库才能运行。

虚拟环境如何工作

我们已经了解了在全局开发环境中安装包所带来的问题(系统范围的安装)。 这促使我们了解虚拟环境如何解决这个问题。

当你为 Python 项目创建并激活一个虚拟环境时,你只会安装当前项目需要的包。

回到 Django 项目的例子,使用虚拟环境,你可以同时运行 Django 2.2 和 Django 4 的项目,而不会发生冲突。 这是因为 Django 的安装不再是系统全局的,而是仅限于每个项目的虚拟环境。

简而言之,虚拟环境是包含项目代码和依赖项的独立环境。

虚拟环境的优势

既然你已经了解了 Python 中虚拟环境的工作原理,那么让我们列举一下使用它们的优点:

  • 虚拟环境为单个项目提供了一个独立的开发环境,允许你只安装该项目需要的包。
  • 由于每个项目的虚拟环境都是独立且隔离的,不同的项目可以使用同一个库的不同版本,这取决于项目需求。 使用虚拟环境,你无需担心安装库和设置开发环境时的系统权限问题。
  • 在虚拟环境中安装包后,你可以将项目的所有依赖项记录在 `requirements.txt` 文件中。 这使得其他开发人员可以轻松复制项目的开发环境,并使用单个命令安装所需的包。

现在,你已经了解了虚拟环境的工作原理以及使用它们的优势。 接下来,我们将介绍一些可以用来在 Python 中创建和管理虚拟环境的流行工具。

#1. Virtualenv

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

#2. Pipenv

使用 pipenv,你可以同时获得 `virtualenv` 的虚拟环境功能和 pip 的包管理功能。 它使用 pipfiles 来管理虚拟环境中的项目依赖项。

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

#3. Conda

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

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

#4. Poetry

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

#5. Venv

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

通过 Python 安装就可以轻松获得,无需安装额外的包。 本教程将使用它来创建和使用虚拟环境。 ✅

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

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

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

为了方便管理,我们先创建一个项目目录,然后进入该目录;我们将在这个目录中创建 venv。

$ mkdir my_project
$ cd my_project

为 Python 项目创建虚拟环境的通用语法是 `python3 -m venv <虚拟环境名称或路径>`。 运行此命令后,将在当前工作目录中创建一个名为 `my_env` 的虚拟环境:

$ python3 -m venv my_env

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

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

$ source my_env/bin/activate

激活虚拟环境后,可以运行 `pip list` 命令来查看已安装的包:

$ pip list

目前,我们还没有安装任何软件包,因此在每个新建的虚拟环境中,你应该看到默认安装的 setuptools 和 pip。

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

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

$ pip install requests

安装 requests 库时,你会看到 requests 库以及它所需的所有包都被一起安装。

$ pip list

你可以使用 `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 <虚拟环境路径>

如何激活虚拟环境

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

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

> <虚拟环境路径>Scriptsactivate.bat

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

> <虚拟环境路径>ScriptsActivate.ps1

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

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

结论

本文讨论了系统范围安装的局限性以及它们如何使 Python 项目中的依赖管理变得复杂。 Python 中的虚拟环境提供了一种更好地管理依赖关系的方法,并为每个项目提供了独立的开发环境。

在 Python 中用于创建和管理虚拟环境的许多工具中,你学习了如何使用内置于 Python 标准库中的 `venv` 来创建和激活虚拟环境。

在项目的专用虚拟环境中,可以安装特定于项目的库版本。 然后,可以将这些需求记录在 `requirements.txt` 文件中,方便其他开发人员轻松复制项目环境。

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