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

本文分享自华为云社区《使用Python的pip管理项目的依赖关系》,作者:Yuchuan。

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

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

  • pip在您的工作环境中设置
  • 修复与使用相关的常见错误pip
  • 安装和卸载软件包pip
  • 使用需求文件管理项目的依赖关系

开始使用pip

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

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

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

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

pip在您的系统上查找

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

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

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

  • 视窗
  • Linux+macOS
C:\>wherepip3

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

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

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

pip作为模块运行

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

$python3-mpip

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

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

pip在Python虚拟环境中使用

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

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

  1. 确保您为手头的项目使用正确的Python版本
  2. 确信您在运行时引用了正确的pip实例pip或pip3
  3. 在不影响其他项目的情况下为您的项目使用特定的包版本

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

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

  • 视窗
  • Linux+macOS
C:\>python-mvenvvenv
C:\>venv\Scripts\activate.bat
(venv)C:\>pip3--version
pip21.2.3from...\lib\site-packages\pip(python3.10)
(venv)C:\>pip--version
pip21.2.3from...\lib\site-packages\pip(python3.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:

  1. ensurepip模块_
  2. get-pip.py脚本_

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

  • 视窗
  • Linux+macOS
C:\>python-mensurepip--upgrade

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

注意:模块ensurepip不上网。可以安装的最新版本pip是ensurepip捆绑在您环境的Python安装中的版本。例如,ensurepip使用Python3.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:\>pythonget-pip.py

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

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

安装软件包pip

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

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

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

使用Python包索引(PyPI)

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

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstallrequests

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstallrptreecodetiming

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpiplist
PackageVersion
---------------------------
certifix.y.z
charset-normalizerx.y.z
codetimingx.y.z
idnax.y.z
pipx.y.z
requestsx.y.z
rptreex.y.z
setuptoolsx.y.z
urllib3x.y.z

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipshowrequests
Name:requests
Version:x.y.z
Summary:PythonHTTPforHumans.
...
Requires:certifi,idna,charset-normalizer,urllib3
Required-by:

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

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

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

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

使用自定义包索引

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

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstall-ihttps://test.pypi.org/simple/rptree

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipconfiglist-vv

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

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

#pip.conf

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

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

从GitHub存储库安装包

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstallgit+https://github.com/realpython/rptree

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

>>>
>>>importrptree
>>>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:\>gitclonehttps://github.com/realpython/rptree
2C:\>cdrptree
3C:\rptree>python3-mvenvvenv
4C:\rptree>venv\Scripts\activate.bat
5(venv)C:\rptree>python-mpipinstall-e.

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

  1. 第1行克隆了rptree包的Git存储库。
  2. 第2行将工作目录更改为rptree/.
  3. 第3行和第4行创建并激活了一个虚拟环境。
  4. 第5行将当前目录的内容安装为可编辑的包。

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

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

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

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

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

使用需求文件

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

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

固定要求

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipfreeze>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。

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements.txt

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpiplist

PackageVersion
---------------------------
certifix.y.z
charset-normalizerx.y.z
idnax.y.z
pipx.y.z
requestsx.y.z
setuptoolsx.y.z
urllib3x.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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstall-U-rrequirements.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

-rrequirements.txt
pytest>=x.y.z

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements_dev.txt

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements.txt

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

生产冷冻要求

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

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

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

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

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

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

卸载软件包pip

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

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipshowrequests

Name:requests
Version:2.26.0
Summary:PythonHTTPforHumans.
Home-page:https://requests.readthedocs.io
Author:KennethReitz
Author-email:me@kennethreitz.org
License:Apache2.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-mpipuninstallcertifi

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipuninstallurllib3-y

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipuninstall-ycharset-normalizeridnarequests

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

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

  • 视窗
  • Linux+macOS
(venv)C:\>python-mpipuninstall-rrequirements.txt-y

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

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

探索替代方案pip

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

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

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

结论

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

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

  • pip在您的工作环境中设置和运行
  • 修复与使用相关的常见错误pip
  • 安装和卸载软件包pip
  • 定义项目和应用程序的要求
  • 在需求文件中固定依赖项

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

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

点击关注,第一时间了解华为云新鲜技术~

pip:带你认识一个 Python 开发工作流程中的重要工具的更多相关文章

  1. TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具

    怀着鸡动的心情跟大家介绍一款国产开源运维软件TriAquae,轻松帮你搞定大部分运维工作!TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具,可以允许用户通过一台控制端管理上千 ...

  2. python开发-实现redis中的发布订阅功能

    Python3学习(二十七):python实现Redis的订阅与发布(sub-pub机制) 先介绍一下redis的pub/sub功能: Pub/Sub功能(means Publish, Subscri ...

  3. Git代码分支开发工作流程

    本文的工作流程,有一个共同点:都采用"功能驱动式开发"(Feature-driven development,简称FDD). 它指的是,需求是开发的起点,先有需求再有功能分支(fe ...

  4. python 统计工作簿中每个人名出现的次数

    工作簿 需求:统计人名出现的次数 代码: # coding=gbk import pandas as pd import re def extract_chinese(txt): pattern = ...

  5. python开发必备神器 Virtualenv及管理工具Virtualenvwrapper

    如果在一台机器上,想开发多个不同的项目,需要用到同一个包的不同版本,如果还在本地继续安装,在同一个目录下安装或者更新,其它的项目必须就无法运行了,怎么办呢? 解决方案:虚拟环境 虚拟环境可以搭建独立的 ...

  6. 十分钟带你了解CANN应用开发全流程

    摘要:CANN作为昇腾AI处理器的发动机,支持业界多种主流的AI框架,包括MindSpore.TensorFlow.Pytorch.Caffe等,并提供1200多个基础算子. 2021年7月8日,第四 ...

  7. JAVA开发工作流程

    阶段 0 :拟出一个计划 决定在后面的过程中采取哪些步骤,思考整个开发任务如何实现,分步骤建立“路标”,这样可以帮助自己开发时一步一个脚印的逐步完成,有效的防止自己在开发过程中迷失方向. 阶段 1 : ...

  8. python开发_platform_获取操作系统详细信息工具

    ''' python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称及版本号,'Win ...

  9. 创意编程,Python开发多功能壁纸自动切换工具!

    import ctypes import time import requests import os from threading import Thread from tkinter import ...

随机推荐

  1. 【ASP.NET Core】MVC 控制器的模型绑定(宏观篇)

    欢迎来到老周的水文演播中心. 咱们都知道,MVC的控制器也可以用来实现 Web API 的(它们原本就是一个玩意儿),区别嘛也就是一个有 View 而另一个没有 View.于是,在依赖注入的服务容器中 ...

  2. JavaScript基础之模块化默认导出:default

    在使用 export 导出后,import 导入时需要使用花括号对应模块.使用 export default 后,可以省略花括号.且一个js模块只能有一个默认导出,因此在导入的时候可以随意命名. 但是 ...

  3. 前端面试题(js)

    js 基础面试题 css 面试题 js 面试题 JavaScript 有几种类型的值?,你能画一下他们的内存图吗 原始数据类型(Undefined,Null,Boolean,Number.String ...

  4. 4月16日 python学习总结 封装之property、多态 、classmethod和staticmethod

    一.封装之property @property把一个函数伪装成一个数据类型  @伪装成数据的函数名.setter   控制该数据的修改,修改该数据时触发 @伪装成数据的函数名.delect  控制该数 ...

  5. SpringMVC前后端分离交互传参详细教程

    温故而知新,本文为一时兴起写出,如有错误还请指正 本文后台基于SpringBoot2.5.6编写,前端基于Vue2 + axios和微信小程序JS版分别编写进行联调测试,用于理解前后端分离式开发的交互 ...

  6. request的自动urlencode问题解决

    今天写盲注脚本的时候,由于题目对空格进行了过滤,所以必须要用%09进行代替,然而当我在脚本中,将payload的空格替换成%09的时候,抓包发现进行了两次编码,导致脚本一直跑不通. 自己在网上也没有找 ...

  7. 托管调试助手 "DisconnectedContext":“针对此 RuntimeCallableWrapper 向 COM 上下文 0xd47808 的转换失败,错误如下: 系统调用失败。

    参考资料 托管调试助手 "DisconnectedContext":"针对此 RuntimeCallableWrapper 向 COM 上下文 0xd47808 的转换失 ...

  8. 10ISE14.7和modelsim10.5关联编译库

    今天准备在ISE14.7中调用PLL的IP核,搞一下时钟的分频和倍频.可在我做好pll的IP核后,我直接用ise生成了一个仿真文件,只需要修改下例化模块名和加一个时钟就行勒. 问题:但怎么在ISE14 ...

  9. Kerberos与各大组件的集成

    1. 概述 Kerberos可以与CDH集成,CDH里面可以管理与hdfs.yarn.hbase.yarn.kafka等相关组件的kerberos凭证.但当我们不使用CDH的时候,也需要了解hdfs. ...

  10. swagger-ui提交请求无name(指input中的name属性)值

    swagger-ui提交请求,请求不包含name值,造成后台无法进行接受参数. @Operation(description = "上传文件",tags = "上传&qu ...