pip、conda7种Python包管理工具对比测评

开始使用 Python 并创建我的第一个包时,我很困惑。创建和管理包似乎比我预想的要困难得多。此外,存在多种工具,但我不确定该使用哪一种。我相信你们大多数人过去都遇到过同样的问题。Python 有无数的工具来管理虚拟环境和创建包,但很难(或几乎不可能)了解哪一个适合您的需求。存在一些关于该主题的演讲和博客文章,但它们都没有给出完整的概述或以结构化的方式评估这些工具。这就是这篇文章的主题。

  • Python 版本管理
  • 包管理
  • 环境管理(主要涉及虚拟环境)
  • 包构建
  • 包发布

正如下面的维恩图中所示,存在很多工具。有些是单一用途的,有些是多面手:pip、conda7种Python包管理工具对比测评-1

让我们从开发人员的角度来浏览一下这些类别:假设您同时处理个人项目和工作项目。在工作中,您使用的是 Python 3.7,而您的个人项目应该使用最新的 Python 版本(当前为 3.11)。换句话说:您希望能够安装不同的 Python 版本并在它们之间进行切换。这就是我们的第一个类别,Python 版本管理的内容。

在您的项目中,您正在使用其他软件包(例如 pandas 或 sklearn 用于数据科学)。这些是您必须安装和管理的项目的依赖项(例如,在发布新版本时进行升级)。这就是包管理的意义所在。

由于不同的项目可能需要同一包的不同版本,因此您需要创建(和管理)虚拟环境以避免依赖冲突。用于此目的的工具收集在环境管理类别中。大多数工具使用虚拟环境,但有些工具使用另一个称为 “本地包”(Local Packages) 的概念,我们稍后会讨论。

您可能希望与其他开发人员共享您的代码。为此,您首先必须构建包(包构建),然后才能将其发布到 PyPI 或其他索引(包发布)。

下面我们将更详细地了解每个类别,包括简短的定义、动机和可用的工具。我将在最后的单独部分中更详细地介绍一些单一用途工具和一些多用途工具。我们先从第一类开始:Python 版本管理。