使用 Python 的 pip 管理项目的依赖关系

网友投稿 1147 2022-05-29

目录

开始使用点子

在您的系统上查找点子

将 pip 作为模块运行

在 Python 虚拟环境中使用 pip

发生错误时重新安装 pip

使用 pip 安装软件包

使用 Python 包索引 (PyPI)

使用自定义包索引

从 GitHub 存储库安装包

以可编辑模式安装包以简化开发

使用需求文件

固定要求

微调要求

分离生产和开发依赖

生产冷冻要求

使用 pip 卸载软件包

探索点子的替代方案

结论

Python的标准包管理器是pip. 它允许您安装和管理不属于Python 标准库的包。如果您正在寻找 的介绍pip,那么您来对地方了!

在本教程中,您将学习如何:

pip在您的工作环境中设置

修复与使用相关的常见错误pip

安装和卸载软件包pip

使用需求文件管理项目的依赖关系

开始使用pip

那么,具体是pip做什么的呢?pip是Python的包管理器。这意味着它是一个允许您安装和管理不作为标准库的一部分分发的库和依赖项的工具。pip这个名字是由 Ian Bicking 在 2008 年提出的:

我已将 pyinstall 重命名为新名称:pip。名称 pip 是 [an] 首字母缩写词和声明: pip 安装包。(来源)

包管理非常重要,以至于 Python 的安装程序pip从 3.4 和 2.7.9 版本开始就分别针对 Python 3 和 Python 2 进行了安装。许多 Python 项目使用pip,这使其成为每个 Pythonista 的必备工具。

如果您来自另一种编程语言,那么您可能对包管理器的概念很熟悉。JavaScript使用npm进行包管理,Ruby使用gem,.NET 平台使用NuGet。在 Python 中,pip已经成为标准的包管理器。

pip在您的系统上查找

Python 3 安装程序为您在pip系统上安装 Python 时提供了安装选项。事实上,pip使用 Python 安装的选项是默认勾选的,所以pip安装 Python 后应该就可以使用了。

注意:在某些 Linux (Unix) 系统(如 Ubuntu)上,有pip一个名为. 解释器默认不安装它。python3-pipsudo apt install python3-pip

pip您可以通过在系统上查找pip3可执行文件来验证它是否可用。在下面选择您的操作系统并相应地使用您的平台特定命令:

视窗

Linux + macOS

C:\> where pip3

Windows 上的where命令会告诉你在哪里可以找到pip3. 如果 Windows 找不到名为 的可执行文件pip3,那么您也可以尝试在末尾pip不带三个 ( ) 的情况下查找。3

在 Windows 和 Unix 系统上,pip3可能会在多个位置找到。当您安装了多个 Python 版本时,可能会发生这种情况。如果您在系统上的任何位置都找不到pip,那么您可以考虑重新安装 pip。

除了pip直接运行系统,您还可以将其作为 Python 模块运行。在下一节中,您将了解如何操作。

pip作为模块运行

当您pip直接运行您的系统时,该命令本身不会显示pip属于哪个 Python 版本。不幸的是,这意味着您可以pip在不注意的情况下将包安装到旧 Python 版本的站点包中。为了防止这种情况发生,您可以pip作为 Python 模块运行:

$ python3 -m pip

请注意,您使用python3 -m运行pip. 该-m开关告诉 Python 将模块作为python3解释器的可执行文件运行。这样,您可以确保您的系统默认 Python 3 版本运行该pip命令。如果您想了解更多关于这种跑步方式的信息pip,那么您可以阅读 Brett Cannon 关于使用python3 -m pip.

有时您可能希望更加明确并将包限制为特定项目。在这种情况下,您应该pip在虚拟环境中运行。

pip在 Python 虚拟环境中使用

为避免将包直接安装到系统 Python 安装中,您可以使用虚拟环境。虚拟环境为您的项目提供了一个独立的 Python 解释器。您在此环境中使用的任何包都将独立于您的系统解释器。这意味着您可以将项目的依赖项与其他项目和整个系统分开。

pip在虚拟环境中使用具有三个主要优点。你可以:

确保您为手头的项目使用正确的 Python 版本

确信您在运行时引用了正确的pip实例pip或pip3

在不影响其他项目的情况下为您的项目使用特定的包版本

venvPython 3 具有用于创建虚拟环境的内置模块。此模块可帮助您使用隔离的 Python 安装创建虚拟环境。激活虚拟环境后,您可以将软件包安装到此环境中。您安装到一个虚拟环境中的软件包与系统上的所有其他环境隔离。

您可以按照以下步骤创建虚拟环境并验证您是否pip在新创建的环境中使用该模块:

视窗

Linux + macOS

C:\> python -m venv venv C:\> venv\Scripts\activate.bat (venv) C:\> pip3 --version pip 21.2.3 from ...\lib\site-packages\pip (python 3.10) (venv) C:\> pip --version pip 21.2.3 from ...\lib\site-packages\pip (python 3.10)

venv在这里,您使用 Python 的内置venv模块创建一个虚拟环境。然后你用source命令激活它。()您的姓名周围的括号 ( )venv表示您已成功激活虚拟环境。

最后,检查激活的虚拟环境中的pip3和可执行文件的版本。pip两者都指向同一个pip模块,因此一旦您的虚拟环境被激活,您就可以使用pip或pip3。

pip发生错误时重新安装

运行pip命令时,在某些情况下可能会出现错误。您的具体错误消息将取决于您的操作系统:

类似这样的错误消息表明安装pip.

注意:pip当命令不起作用时,在开始任何故障排除之前,您可以尝试使用末尾pip3带有三个( )的命令。3

出现上面显示的错误可能会令人沮丧,因为pip对于安装和管理外部软件包至关重要。一些常见问题与pip此工具在您的系统上的安装方式有关。

尽管不同系统的错误消息不同,但它们都指向同一个问题:您的系统在变量pip中列出的位置中找不到。PATH在 Windows 上,PATH是系统变量的一部分。在 macOS 和 Linux 上,PATH是环境变量的一部分。您可以PATH使用以下命令检查变量的内容:

视窗

Linux + macOS

C:\> echo %PATH%

此命令的输出将显示磁盘上操作系统查找可执行程序的位置(目录)列表。根据您的系统,位置可以用冒号 ( :) 或分号 ( ;) 分隔。

默认情况下,安装 Python 或创建虚拟环境后,包含pip可执行文件的目录应该存在。PATH然而,失踪pip是一个普遍的问题。两种受支持的方法可以帮助您pip再次安装并将其添加到您的PATH:

ensurepip模块_

get-pip.py脚本_

自 Python 3.4 以来,该ensurepip模块一直是标准库的一部分。添加它是为了为您提供一种直接的重新安装方式,pip例如,如果您在安装 Python 时跳过它或pip在某个时候卸载了它。在下面选择您的操作系统并ensurepip相应地运行:

视窗

Linux + macOS

C:\> python -m ensurepip --upgrade

如果pip尚未安装,则此命令会将其安装在您当前的 Python 环境中。如果您处于活动的虚拟环境中,则该命令会安装pip到该环境中。否则,它将pip全局安装在您的系统上。该--upgrade选项确保pip版本与 中声明的版本相同ensurepip。

注意:模块ensurepip不上网。可以安装的最新版本pip是ensurepip捆绑在您环境的 Python 安装中的版本。例如,ensurepip使用 Python 3.10.0 运行会安装pip21.2.3。如果你想要一个更新的pip版本,那么你需要先运行ensurepip. 之后,您可以pip手动更新到其最新版本。

修复pip安装的另一种方法是使用get-pip.py脚本。该get-pip.py文件包含pip编码ZIP 文件的完整副本。您可以get-pip.py直接从PyPA 引导页面下载。一旦你的机器上有脚本,你就可以像这样运行 Python 脚本:

视窗

Linux + macOS

C:\> python get-pip.py

此脚本将在您当前的 Python 环境中安装最新版本的pip、setuptools和。wheel如果您只想安装pip,那么您可以将--no-setuptools和--no-wheel选项添加到您的命令中。

如果上述方法都不起作用,那么可能值得尝试为您当前平台下载最新的Python 版本。您可以遵循Python 3 安装和设置指南,以确保pip已正确安装并且可以正常工作。

安装软件包pip

Python被认为是一种包含电池的语言。这意味着Python 标准库包含一组广泛的包和模块,以帮助开发人员完成他们的编码项目。

同时,Python 拥有一个活跃的社区,该社区提供了更广泛的包集,可以帮助您满足开发需求。这些包发布到Python 包索引,也称为PyPI(发音为Pie Pea Eye)。

PyPI 托管大量包,包括开发框架、工具和库。其中许多包为 Python 标准库的功能提供了友好的接口。

使用 Python 包索引 (PyPI)

PyPI 托管的众多软件包之一称为requests. 该库通过抽象HTTP请求的复杂性requests来帮助您与 Web 服务进行交互。您可以在其官方文档网站上了解所有相关信息。requests

当你想requests在你的项目中使用这个包时,你必须首先将它安装到你的环境中。如果你不想在你的系统 Python 站点包中安装它,那么你可以先创建一个虚拟环境,如上图所示。

创建并激活虚拟环境后,命令行提示符会在括号内显示虚拟环境的名称。您从现在开始执行的任何pip命令都将在您的虚拟环境中发生。

要安装软件包,请pip提供一个install命令。您可以运行它来安装requests软件包:

视窗

Linux + macOS

(venv) C:\> python -m pip install requests

在此示例中,您pip使用install命令运行,后跟要安装的包的名称。该pip命令在 PyPI 中查找包,解析其依赖项,并在当前 Python 环境中安装所有内容以确保其requests正常工作。

该pip install 命令始终查找最新版本的软件包并安装它。它还搜索包元数据中列出的依赖项并安装它们以确保包具有所需的所有要求。

也可以在一个命令中安装多个包:

视窗

Linux + macOS

(venv) C:\> python -m pip install rptree codetiming

通过链接包rptree并codetiming在pip install命令中,您可以一次安装两个包。您可以在pip install命令中添加任意数量的包。在这种情况下,requirements.txt文件可以派上用场。在本教程的后面部分,您将学习如何使用一个requirements.txt文件一次安装多个包。

注意:除非包的特定版本号与本教程相关,否则您会注意到版本字符串采用x.y.z. 这是一种占位符格式,可以代表3.1.4、2.9或任何其他版本号。当您继续操作时,终端中的输出将显示您的实际包版本号。

您可以使用该list命令显示安装在您的环境中的软件包及其版本号:

视窗

Linux + macOS

(venv) C:\> python -m pip list Package Version ------------------ --------- certifi x.y.z charset-normalizer x.y.z codetiming x.y.z idna x.y.z pip x.y.z requests x.y.z rptree x.y.z setuptools x.y.z urllib3 x.y.z

该pip list命令呈现一个表格,显示当前环境中所有已安装的包。上面的输出使用x.y.z占位符格式显示包的版本。在您的环境中运行该pip list命令时,pip会显示您为每个包安装的特定版本号。

要获取有关特定包的更多信息,您可以使用以下show命令查看包的元数据pip:

视窗

Linux + macOS

(venv) C:\> python -m pip show requests Name: requests Version: x.y.z Summary: Python HTTP for Humans. ... Requires: certifi, idna, charset-normalizer, urllib3 Required-by:

您系统上此命令的输出将列出包的元数据。该Requires行列出了包,例如certifi、idna、charset-normalizer和urllib3。这些是安装的,因为requests依赖于它们才能正常工作。

现在您已经安装requests了它及其依赖项,您可以像导入Python 代码中的任何其他常规包一样导入它。启动交互式 Python 解释器并导入requests包:

>>>

>>> import requests >>> requests.__version__ "x.y.z"

启动交互式 Python 解释器后,您导入了requests模块。通过调用requests.__version__,您确认您正在requests虚拟环境中使用该模块。

使用自定义包索引

默认情况下,pip使用 PyPI 查找包。但pip也为您提供了定义自定义包索引的选项。

pip当 PyPI 域在您的网络上被阻止或您想要使用不公开可用的包时,使用自定义索引会很有帮助。有时系统管理员也会创建自己的内部包索引,以更好地控制pip公司网络上的用户可以使用哪些包版本。

自定义包索引必须符合PEP 503 – Simple Repository API to work with pip. 您可以通过访问PyPI 简单索引来了解此类API(应用程序编程接口)的外观——但请注意,这是一个包含许多难以解析的内容的大页面。任何遵循相同 API 的自定义索引都可以作为该选项的目标。除了键入,您还可以使用速记。--index-url--index-url-i

例如,要从TestPyPIrptree包索引安装该工具,您可以运行以下命令:

视窗

Linux + macOS

使用自定义包索引

默认情况下,pip使用 PyPI 查找包。但pip也为您提供了定义自定义包索引的选项。

pip当 PyPI 域在您的网络上被阻止或您想要使用不公开可用的包时,使用自定义索引会很有帮助。有时系统管理员也会创建自己的内部包索引,以更好地控制pip公司网络上的用户可以使用哪些包版本。

自定义包索引必须符合PEP 503 – Simple Repository API to work with pip. 您可以通过访问PyPI 简单索引来了解此类API(应用程序编程接口)的外观——但请注意,这是一个包含许多难以解析的内容的大页面。任何遵循相同 API 的自定义索引都可以作为该选项的目标。除了键入,您还可以使用速记。--index-url--index-url-i

例如,要从TestPyPIrptree包索引安装该工具,您可以运行以下命令:

视窗

Linux + macOS

(venv) C:\> python -m pip install -i https://test.pypi.org/simple/ rptree

使用该-i选项,您告诉pip查看不同的包索引而不是默认的 PyPI。在这里,您是rptree从 TestPyPI 而不是从 PyPI 安装的。您可以使用 TestPyPI 来微调Python 包的发布过程,而不会弄乱 PyPI 上的生产包索引。

如果您需要永久使用替代索引,则可以在配置文件index-url中设置该选项。该文件名为,您可以通过运行以下命令找到它的位置:pip pip.conf

视窗

Linux + macOS

(venv) C:\> python -m pip config list -vv

使用该pip config list命令,您可以列出活动配置。此命令仅在您设置了自定义配置时才会输出。否则,输出为空。那时,additive--verbose或-vv, 选项可能会有所帮助。添加 时-vv,pip会显示它在哪里查找不同的配置级别。

如果要添加pip.conf文件,则可以选择pip config list -vv列出的位置之一。具有自定义包索引的pip.conf文件如下所示:

# pip.conf [global] index-url = https://test.pypi.org/simple/

当你有这样的pip.conf文件时,pip将使用定义index-url的来查找包。使用此配置,您无需--index-url在命令中使用选项pip install来指定您只需要可以在TestPyPI的简单 API中找到的包。

从 GitHub 存储库安装包

您不仅限于托管在 PyPI 或其他包索引上的包。pip还提供了从GitHub 存储库安装包的选项。但即使包托管在 PyPI 上,例如Real Python 目录树生成器,您也可以选择从其Git 存储库安装它:

视窗

Linux + macOS

(venv) C:\> python -m pip install git+https://github.com/realpython/rptree

使用该git+https方案,您可以指向包含可安装包的 Git 存储库。您可以通过运行交互式 Python 解释器并导入来验证您是否正确安装了包rptree:

>>>

>>> import rptree >>> rptree.__version__ "x.y.z"

启动交互式 Python 解释器后,导入rptree模块。通过调用rptree.__version__,您可以验证您正在使用rptree基于虚拟环境的模块。

注意:如果您使用的是 Git 以外的版本控制系统 (VCS),pip您是否了解过。要了解如何使用pipMercurial、Subversion 或 Bazaar,请查看文档的VCS支持章节pip。

如果包不是托管在 PyPI 上但具有远程 Git 存储库,则从 Git 存储库安装包会很有帮助。您指向的远程存储库pip甚至可以托管在公司 Intranet 上的内部 Git 服务器上。当您在防火墙后面或对 Python 项目有其他限制时,这可能很有用。

以可编辑模式安装包以简化开发

在处理自己的包时,以可编辑模式安装它是有意义的。通过这样做,您可以像在任何其他包中一样使用命令行,同时处理源代码。一个典型的工作流程是首先克隆存储库,然后pip将其作为可编辑包安装到您的环境中:

视窗

Linux + macOS

1C:\> git clone https://github.com/realpython/rptree 2C:\> cd rptree 3C:\rptree> python3 -m venv venv 4C:\rptree> venv\Scripts\activate.bat 5(venv) C:\rptree> python -m pip install -e .

使用上面的命令,您将rptree包安装为可编辑模块。以下是您刚刚执行的操作的分步细分:

第 1 行克隆了rptree包的 Git 存储库。

第 2行将工作目录更改为rptree/.

第 3 行和第 4 行创建并激活了一个虚拟环境。

第 5行将当前目录的内容安装为可编辑的包。

-e选项是选项的简写--editable。当您使用带有 的-e选项时pip install,您告诉pip您要以可编辑模式安装包。不使用包名,而是使用点 ( .) 来指向pip当前目录。

如果您没有使用该-e标志,pip则通常会将软件包安装到您的环境site-packages/文件夹中。当您以可编辑模式安装包时,您将在站点包中创建指向本地项目路径的链接:

~/rptree/venv/lib/python3.10/site-packages/rptree.egg-link

使用pip install带有标志的命令-e只是pip install提供的众多选项之一。您可以查看文档中的pip install示例。pip在那里,您将学习如何安装特定版本的包或指向pip不是 PyPI 的不同索引。

在下一部分中,您将了解需求文件如何帮助您的pip工作流程。

使用需求文件

该pip install命令始终安装包的最新发布版本,但有时您的代码需要特定的包版本才能正常工作。

您希望创建用于开发和测试应用程序的依赖项和版本的规范,以便在生产中使用该应用程序时不会感到意外。

固定要求

当您与其他开发人员共享您的 Python 项目时,您可能希望他们使用与您正在使用的相同版本的外部包。可能某个包的特定版本包含您依赖的新功能,或者您正在使用的包的版本与以前的版本不兼容。

这些外部依赖项也称为需求。您经常会发现 Python 项目将其需求固定在一个名为requirements.txt或类似的文件中。需求文件格式允许您精确指定应该安装哪些包和版本。

运行pip help显示有一个freeze命令以需求格式输出已安装的包。您可以使用此命令,将输出重定向到文件以生成需求文件:

视窗

Linux + macOS

(venv) C:\> python -m pip freeze > requirements.txt

requirements.txt此命令在您的工作目录中创建一个文件,其内容如下:

certifi==x.y.z charset-normalizer==x.y.z idna==x.y.z requests==x.y.z urllib3==x.y.z

请记住,x.y.z上面显示的是包版本的占位符格式。您的requirements.txt文件将包含真实的版本号。

该freeze命令将当前安装的包的名称和版本转储到标准输出。您可以将输出重定向到一个文件,您以后可以使用该文件将您的确切要求安装到另一个系统中。您可以随意命名需求文件。然而,一个被广泛采用的约定是命名它requirements.txt。

当您想在另一个系统中复制环境时,您可以运行pip install,使用-r开关指定需求文件:

视窗

Linux + macOS

(venv) C:\> python -m pip install -r requirements.txt

在上面的命令中,您告诉pip将列出的软件包安装requirements.txt到当前环境中。包版本将匹配requirements.txt文件包含的版本约束。您可以运行pip list以显示刚刚安装的软件包及其版本号:

视窗

Linux + macOS

(venv) C:\> python -m pip list Package Version ------------------ --------- certifi x.y.z charset-normalizer x.y.z idna x.y.z pip x.y.z requests x.y.z setuptools x.y.z urllib3 x.y.z

现在您已准备好分享您的项目!您可以提交requirements.txt到 Git 等版本控制系统,并使用它在其他机器上复制相同的环境。但是等等,如果为这些软件包发布了新的更新会发生什么?

微调要求

对包的版本和依赖项进行硬编码的问题在于,包会经常使用错误和安全修复进行更新。您可能希望在这些更新发布后立即利用它们。

需求文件格式允许您使用比较运算符指定依赖版本,这使您可以灵活地确保更新包,同时仍定义包的基本版本。

requirements.txt在您喜欢的编辑器中打开并将相等运算符 ( ==) 转换为大于或等于运算符 ( >=),如下例所示:

# requirements.txt certifi>=x.y.z charset-normalizer>=x.y.z idna>=x.y.z requests>=x.y.z urllib3>=x.y.z

微调要求

对包的版本和依赖项进行硬编码的问题在于,包会经常使用错误和安全修复进行更新。您可能希望在这些更新发布后立即利用它们。

需求文件格式允许您使用比较运算符指定依赖版本,这使您可以灵活地确保更新包,同时仍定义包的基本版本。

requirements.txt在您喜欢的编辑器中打开并将相等运算符 ( ==) 转换为大于或等于运算符 ( >=),如下例所示:

# requirements.txt certifi>=x.y.z charset-normalizer>=x.y.z idna>=x.y.z requests>=x.y.z urllib3>=x.y.z

您可以将比较运算符更改>=为告诉pip安装已发布的确切或更高版本。当您使用该requirements.txt文件设置新环境时,pip查找满足要求的最新版本并安装它。

接下来,您可以通过使用开关或简写运行install命令来升级需求文件中的软件包:--upgrade-U

视窗

Linux + macOS

(venv) C:\> python -m pip install -U -r requirements.txt

如果列出的软件包有新版本可用,则该软件包将被升级。

在理想情况下,新版本的包将向后兼容并且永远不会引入新的错误。不幸的是,新版本可能会引入会破坏您的应用程序的更改。为了微调您的需求,需求文件语法支持额外的版本说明符。

想象一下,发布了一个新版本,3.0但requests引入了一个不兼容的更改,从而破坏了您的应用程序。您可以修改需求文件以防止3.0或更高版本被安装:

# requirements.txt certifi==x.y.z charset-normalizer==x.y.z idna==x.y.z requests>=x.y.z, <3.0 urllib3==x.y.z

更改包的版本说明符可确保不会安装requests任何大于或等于的版本。3.0该pip文档提供了有关需求文件格式的大量信息,您可以查阅它以了解更多信息。

分离生产和开发依赖

并非您在应用程序开发过程中安装的所有软件包都是生产依赖项。例如,您可能想要测试您的应用程序,因此您需要一个测试框架。一个流行的测试框架是pytest. 您想将它安装在您的开发环境中,但您不希望它在您的生产环境中,因为它不是生产依赖项。

您创建第二个需求文件 ,requirements_dev.txt以列出用于设置开发环境的其他工具:

# requirements_dev.txt pytest>=x.y.z

拥有两个需求文件将要求您使用pip它们来安装它们,requirements.txt并且requirements_dev.txt. 幸运的是,pip允许您在需求文件中指定其他参数,因此您可以修改requirements_dev.txt以安装生产requirements.txt文件中的需求:

# requirements_dev.txt -r requirements.txt pytest>=x.y.z

请注意,您使用相同的-r开关来安装生产requirements.txt文件。现在,在您的开发环境中,您只需运行这个命令即可安装所有要求:

视窗

Linux + macOS

(venv) C:\> python -m pip install -r requirements_dev.txt

因为requirements_dev.txt包含该-r requirements.txt行,所以您不仅要安装,还要pytest安装requirements.txt. 在生产环境中,仅安装生产要求就足够了:

视窗

Linux + macOS

(venv) C:\> python -m pip install -r requirements.txt

使用此命令,您可以安装requirements.txt. 与您的开发环境相比,您的生产环境不会pytest安装。

生产冷冻要求

您创建了生产和开发需求文件并将它们添加到源代码控制中。这些文件使用灵活的版本说明符来确保您利用依赖项发布的错误修复。您还测试了您的应用程序,现在可以将其部署到生产环境中。

您知道所有测试都通过并且应用程序与您在开发过程中使用的依赖项一起工作,因此您可能希望确保将相同版本的依赖项部署到生产环境。

当前版本说明符不保证相同的版本将部署到生产中,因此您希望在发布项目之前冻结生产需求。

根据当前需求完成开发后,创建当前项目新版本的工作流程如下所示:

通过这样的工作流程,该requirements_lock.txt文件将包含准确的版本说明符,并可用于复制您的环境。您已确保当您的用户将列出的软件包安装requirements_lock.txt到他们自己的环境中时,他们将使用您希望他们使用的版本。

冻结您的需求是确保您的 Python 项目在用户环境中以与在您的环境中相同的方式工作的重要步骤。

卸载软件包pip

有时,您必须卸载一个软件包。要么你找到了一个更好的库来替换它,要么它是你不需要的东西。卸载软件包可能有点棘手。

请注意,当您安装时requests,您还pip必须安装其他依赖项。您安装的包越多,多个包依赖相同依赖项的机会就越大。这就是show命令 inpip派上用场的地方。

在卸载软件包之前,请确保运行该show软件包的命令:

视窗

Linux + macOS

(venv) C:\> python -m pip show requests Name: requests Version: 2.26.0 Summary: Python HTTP for Humans. Home-page: https://requests.readthedocs.io Author: Kenneth Reitz Author-email: me@kennethreitz.org License: Apache 2.0 Location: .../python3.9/site-packages Requires: certifi, idna, charset-normalizer, urllib3 Required-by:

注意最后两个字段Requires和Required-by。该show命令告诉您requests需要certifi、idna、charset-normalizer和urllib3。您可能也想卸载这些。请注意,requests任何其他软件包都不需要。所以卸载它是安全的。

您应该show针对所有依赖项运行该命令,requests以确保没有其他库也依赖于它们。一旦了解了要卸载的软件包的依赖顺序,就可以使用以下uninstall命令删除它们:

视窗

Linux + macOS

(venv) C:\> python -m pip uninstall certifi

该uninstall命令向您显示将被删除的文件并要求确认。如果您确定要删除包,因为您已经检查了它的依赖关系并且知道没有其他东西在使用它,那么您可以传递一个-y开关来禁止文件列表和确认对话框:

视窗

Linux + macOS

(venv) C:\> python -m pip uninstall urllib3 -y

在这里你卸载urllib3。使用该-y开关,您可以抑制询问您是否要卸载此软件包的确认对话框。

在一次调用中,您可以指定要卸载的所有包:

视窗

Linux + macOS

(venv) C:\> python -m pip uninstall -y charset-normalizer idna requests

您可以将多个包传递给pip uninstall命令。如果您没有添加任何额外的开关,那么您需要确认卸载每个包。通过传递-y开关,您可以在没有任何确认对话框的情况下将它们全部卸载。

您还可以通过提供-r 选项来卸载需求文件中列出的所有包。此命令将提示每个包的确认请求,但您可以使用-y开关抑制它:

视窗

Linux + macOS

(venv) C:\> python -m pip uninstall -r requirements.txt -y

请记住始终检查要卸载的软件包的依赖关系。您可能想卸载所有依赖项,但卸载其他人使用的包会破坏您的工作环境。因此,您的项目可能不再正常工作。

如果您在虚拟环境中工作,只需创建一个新的虚拟环境就可以减少工作量。然后您可以安装您需要的软件包,而不是尝试卸载您不需要的软件包。但是,pip uninstall当您需要从系统 Python 安装中卸载包时,它会非常有用。pip uninstall如果您不小心在系统范围内安装了软件包,使用是一种整理系统的好方法。

探索替代方案pip

Python 社区提供了出色的工具和库供您在pip. pip这些包括尝试简化和改进包管理的替代方案。

以下是可用于 Python 的其他一些包管理工具:

仅pip捆绑在标准 Python 安装中。如果您想使用上面列出的任何替代方案,则必须遵循其文档中的安装指南。有这么多选择,您一定会找到适合您的编程之旅的工具!

结论

许多 Python 项目使用pip包管理器来管理它们的依赖项。它包含在 Python 安装程序中,是 Python 中依赖项管理的重要工具。

使用 Python 的 pip 管理项目的依赖关系

在本教程中,您学习了如何:

pip在您的工作环境中设置和运行

修复与使用相关的常见错误pip

安装和卸载软件包pip

定义项目和应用程序的要求

在需求文件中固定依赖项

此外,您还了解了使依赖项保持最新的重要性以及pip可以帮助您管理这些依赖项的替代方法。

通过仔细查看pip,您已经探索了 Python 开发工作流程中的一个重要工具。使用,您可以安装和管理在PyPIpip上找到的任何其他包。您可以使用来自其他开发人员的外部包作为需求,并专注于使您的项目独一无二的代码。

Python 虚拟化

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
下一篇:【近3万字分享】《Android开发之路——10年老开发精心整理分享》
相关文章