本篇文章5171字,读完约13分钟

安装标准版python中未包括的其他软件包

搜索发布到python包索引( pypi )的包

3 .安装管理脚本和应用程序的诉求

4 .卸载软件包及其关联

如您所见,python社区非常活跃,为pip制定了简洁的替代方案。 可以在本教程的后半部分看到。

pip入门

那么,什么是pip呢?pip是python的软件包管理器。 这意味着它是一种工具,可以安装和管理不属于标准库的其他库和依赖关系。

因为软件包管理非常重要,从python3的3.4版和python2的2.7.9版开始,pip直接包含在python的安装包中,也用于python的其他项目中,所有pip

如果您知道其他语言,可能熟悉包管理器的概念。 javascript使用npm管理软件包,ruby使用gem,. net使用nuget。 pip在python中用作标准软件包管理器。

因为python安装程序包含pip,所以只要没有安装以前版本的python,就可以直接采用它。 可以通过在控制台上运行以下命令来检查pip是否可用:

您应该看到类似的输出,其中显示了pip的版本、安装位置和python的版本。 如果使用的是不包含pip的旧版本的python,则可以根据pip安装文档中相应系统的证书进行安装。

为了避免将软件包安装在python全局安装环境中,建议在虚拟环境中使用本教程的示例。 python虚拟环境:从入门级了解虚拟环境相关新闻。 本副本的“采用虚拟环境”部分介绍了创建虚拟环境的基本知识。

使用pip安装软件包

python被认为是”。 内置电池”; 公式语言。 这意味着python标准库包含了许多有助于开发人员开发脚本和应用程序的软件包和模块。

此外,python还有一个活动社区,提供开发所需的软件包集合。 这些包分发到python包索引中,也称为pypi (发音为pie pea eye )。 pypi托管许多软件包,包括开发框架、工具和库。

其中许多软件包通过为现有功能提供易于使用的接口简化了python开发。 例如,您可以编写一个仅使用标准python库功能分解网页副本的脚本。

脚本中导入了cgi和http.client。 两者都在python标准库中。 创建https连接对象,指定服务器,调用. request ( )和. getresponse ( )以解析响应新闻。

分析了从应答新闻中,在提取内容类型报头新闻的同时使用cgi模块提取页面编码的字符集。

cgi.parse_header ( )返回包含第一个值和词典作为参数的元组。 例如,content-type标头新闻可能包含文本/ html之类的内容。 charset=iso-8859-1的值。

该元组以字符串text/html为第一个元素,第二个元素为{‘; charset’; : & # 8216 iso-8859-1和# 8217; ”形式的词典。 因为只需要注意charset参数,所以可以使用下划线忽略元组开头: _,params = CGI.parse _ header (内容_类型)。 。

观察: python下划线的含义解释如何从元组中解包值。

对页面进行编码后,可以浏览相应的新闻并将其解码为副本。 您可以在控制台上运行此示例,以了解它是如何工作的。

对于分析网络拷贝的小脚来说,本来这看起来工作有点多。 幸运的是,python包为简化http请求和实现期望提供了友好的接口。

基本软件包的安装

pypi托管着一个非常受欢迎的库requests来完成http请求。 可以在官方文档网站上了解所有相关情况。

第一步是在环境中安装requests软件包。 可以运行pip help以了解pip支持的命令。

如您所见,pip提供了安装软件包的安装命令。 要安装requests软件包,请执行该操作。

可以看到上面这样的输出新闻。 可以使用pip和install命令来跟随要安装的软件包的名称。 pip在pypi中查找这个包,计算依赖关系,安装并确保requests正常工作。

当前环境中的pip版本为18.1,但19.0.1版可用。 此外,还会显示升级pip的命令,让我们尝试一下。

在这里,我们使用python -m升级了pip。 --m开关指示python将模块作为可执行文件运行。 升级pip时,如果在安装新版本之前卸载旧版本,然后在运行时卸载工具,则会发生错误。

将pip作为模块运行时,python会将模块加载到内存中,以便可以在此模块包运行时将其删除。 如果软件包提供了顶级脚本__main__.py,则可以运行该软件包来执行脚本。

安装requests并升级pip后,现在可以使用list命令检查环境中安装的软件包。

如上所述,pip已升级到19.0.1版本(当前最新版本),并且还安装了requests 2.21.0版本。

指示pip install查找并安装软件包的最新版本。 它还在软件包元数据中搜索依赖关系列表,并安装这些依赖关系以确保软件包满足所有请求。

我知道这里安装了很多软件。 可以使用pip的show命令显示软件包的元数据新闻

元数据中列出了依赖关系certifi、chardet、idna和urllib3,您可以看到它们已经安装。

由于安装了requests包,因此可以编辑上述示例,以了解如何更容易地分析网页的副本。

因为在开发环境中安装了requests软件包,所以可以像导入其他标准库一样进行导入。

可以看出,requests.get ( )解析了http连接,并返回了与上一个示例相似的响应,但是它简洁而方便。

requests已经解决了你的大部分情况,所以不需要考虑页面的编码问题。 requests还通过requests.response对象提供了更灵活的接口来解决特殊情况。

采用requirements.txt诉求文件

虽然pip install命令只安装新发行的软件包版本,但您可能希望安装特定版本,具体取决于代码的运行情况。

他们还希望指定在开发和测试时创建的依赖关系和版本,以避免在生产环境中出现意外的应用程序情况。

诉求文件可以准确地指定要安装的软件包和版本。 运行pip help时,将显示freeze命令。 freeze命令将输出样式化,就像已经安装的软件包一样。 使用此命令可以将输出重定向到文件,从而生成诉求文件。

由于freeze命令将所有软件包和版本新闻转储到标准输出,因此可以将这些输出重定向到文件。 这样,其他系统就可以根据该诉求文件进行准确的安装。 该诉求文件名已与requirements.txt约定,但也可以根据个人喜好进行命名。

如果要在其他系统上复制开发环境,可以使用-r开关通过pip install命令指定诉求文件。

软件包的版本与requirements.txt中列出的完全一致。

可以通过将requirements.txt文件提交给资源控制器,在其他计算机上创建准确匹配的环境。

诉求文件

软件包及其依赖版本可能会引起硬编码问题。 这是因为软件包与错误和安全修复相比经常更新。 因为有时希望在发布后立即进行更改。

诉求文件的样式可以使用逻辑运算符指定从属版本。 这样可以提高更新软件包的灵活性,但必须定义软件包的基本版本。

采用你常用的器皿,编辑如下。

通过将逻辑运算符更改为>,告知pip要准确安装指定的发行版本或更高版本。 使用requirments.txt设置新环境时,pip将查找并安装满足诉求的最新版本。 可以采用带–的。 upgrade交换机的install命令用于升级诉求文件中定义的软件包。

“pip是什么意思(Python新手入门指南)”

这里没有升级操作。 虽然你的软件是最新版本,但是在软件包列表中发布新版本后,这个软件包会升级到最新版本。

理想情况下,新版本的软件包是向后兼容的,没有新部署的错误。 遗憾的是,在新版本中引入的更改可能会破坏应用程序。 申诉文件的语法支持额外的版本证书,微调你的申诉。

例如,requests发布了新的3.0版,但有一些与应用程序不兼容的更改。 可以通过创建诉求文档来禁止3.0版或更高版本的安装。

更改requests版本操作符将防止安装3.0或更高版本。 pip文档提供了所有的诉求文件样式,您可以了解到越来越多的相关情况。

生产和开发环境的依赖关系

你在开发过程中安装的依赖项不全是你的应用程序依赖项。 其中很多是发布在pypi上的包,是你在开发中想使用的工具和库。

例如,你可能想对你的应用程序进行单元测试。 需要单元测试的框架。 受欢迎的单元测试框架是pytest。 我想安装在开发环境中,但也不想安装在生产环境中。 因为这不是应用程序的依赖度。

创建第二个诉求文件( requirements_dev.txt ),列出配置开发环境所需的工具。

在此,需要使用pip安装两个诉求文件: requirements.txt和requirements_dev.txt。 pip允许在诉求文件内部指定其他参数。 必须修改对requirements_dev.txt文件的支持,以安装生产文件requirements.txt的诉求。

现在,我们将观察使用完全相同的-r开关来安装生产文件requirements.txt的情况。 诉求文件样式允许为诉求文件指定其他参数。

是生产环境冻结诉求文件

创建生产环境和开发环境诉求文件,并将其添加到资源控制器中。 这些文件可以灵活地指定版本,并且可以通过发布依赖关系来修复错误。 也可以测试应用程序,并准备发布到生产环境中。

因为您知道开发环境应用程序的所有测试都成功通过了,所以您可能希望确保生产环境的依赖版本与统一通道或生成过程中采用的版本完全相同。

当前版本的证书不能保证在生产环境中部署完全相同的版本,因此必须像以前看到的那样冻结证书。

您创建了一个漂亮的生产环境,并使用requirements.txt文件安装了生产诉求。 安装诉求文件后,可以冻结当前的特定版本,并将输出转储到生产环境的requirements_lock.txt文件中。 此requirements_lock.txt文件包含准确的版本证书,可以复制当前环境。

“pip是什么意思(Python新手入门指南)”

搜索可用的软件包

在python的经验增加之后,有了熟悉的软件包,可以在大多数应用程序中使用。 包装requesta和pytest是补充你的python工具箱的好选择。

您可能需要找到有助于处理不同问题和处理问题的工具和库。 如上所述,命令pip help显示了可以搜索由pypi发出的软件包的命令search。

让我们看看这个命令有什么用

此命令提供了一组选项和参数。 query是用于搜索的字符串,其软件包名称和说明匹配。

观察:可以使用pip help搜索其他受支持命令的新闻。

假设您的应用程序需要访问oauth2授权的服务。 理想情况下,它是使用使用requests运行的库和其他类似的接口实现的。 从pip到pypi的搜索:

search命令选项生成了相当大的包集合。 其中之一看起来像django-oauth一样指定服务或技术。 我想找到像requests-oauth这样的新闻。 很遗憾,除了简单的说明以外没有其他消息。

很多时候,我想直接在pypi网站上搜索包。 pypi为索引提供了搜索功能,并使用在包中发布的元数据(如框架、主题和开发情况)过滤搜索结果。

用相同的术语搜索pypi可能会产生大量的结果,但可以进行分类过滤。 例如,要查找有助于开发应用程序的库,请展开intended audience,然后选择developers。 此外,还可能需要可以部署development status并选择production/stable的可用于稳定生产的软件包。

“pip是什么意思(Python新手入门指南)”

在找到所需的包之前,可以应用其他过滤器或调整搜索词。

搜索结果提供了包含越来越多新闻和所需文档的包页面的链接。 让我们看看requests-oauth2的新闻。

这个项目页面提供了越来越多的新闻,看起来好像有主页的链接。 此链接指向github上的项目仓库。 可以看到与项目相关的新闻和招聘实例越来越多。

看了初期源仓库,好像发现了宝贵的财富。 因此,通过查看最新的提交日志、pr(pull request )次数、打开的issues等问题,可以找到项目的状态和提示。

另一种找包的方法是谷歌。 广泛使用的python库显示在谷歌搜索的顶部,应该可以看到pypi包和源仓库的链接。

虽然要找到合适的包需要花一点时间进行研究,但是只要找到了,就能加快开发过程的速度。

卸载/ s2/软件包

有时必须卸载软件包。 要么找到更好的包代替,要么不需要什么功能。 卸载软件包有点麻烦。

现在,让我们来看一下安装requests、pip,同时还安装了其他依赖关系的情况。 你安装的包越多,多个包具有相同依赖性的可能性就越高。 pip的show指令在这里很有用。

在卸载软件包之前,请确保已对该软件包运行了show命令。

观察最后两个属性requires和required-by。 show命令表示请求必须依赖于urllib3、证书、字符和idna。 你可能想卸载其中两个。 此外,您还可以看到requests没有被其他软件包引用,因此可以安全地卸载。

必须对requests的所有依赖关系运行show命令,以确保其他库不依赖。 了解这些依赖关系后,可以使用uninstall命令将其卸载。

卸载软件包将显示要删除的文件,并提示您进行确认。 如果在卸载此包的同时检查依赖关系,并确认其他包没有采用此包,则可以使用-y开关隐藏文件列表并查看提示新闻。

可以一次调用所有要卸载的软件包。

也可以通过指定-r选项来删除诉求文件中列出的所有软件包。 此命令将要求您对所有软件包进行新闻审查。 要确保您知道操作,可以使用-y开关禁止这些提示。

想卸载包的时候,请记住要检查依赖关系。 您可能希望卸载一个包的所有依赖关系,但如果另一个包采用了这些依赖关系,则程序可能会崩溃。

pip的替代品

pip是所有pythonista所需的基本工具,在许多应用程序和项目中被用作软件包管理器。 虽然本教程有助于理解基本知识,但python社区为其他开发人员提供了非常棒的工具和库。 其中也包括pip的替代品,希望实现简洁高效的包装管理。

“pip是什么意思(Python新手入门指南)”

本节介绍可以在python中使用的其他软件包管理工具。

万能的康达

conda是一个多语言包、依赖性和环境经理,包括python。 实际上,它最初来自anaconda,作为用python研究数据科学的包出现。

conda广泛用于数据科学和机器学习应用中,使用自己的索引托管兼容的软件包。

conda不仅可以管理软件包的依赖关系,还可以管理应用程序的虚拟环境,安装兼容的python版本,并在生产环境中部署软件包应用程序。

在windows系统中,用于机器学习的python的设定很好地介绍了conda,探讨了软件包和环境管理。 唯一与windows相关的特定新闻是安装。 这是因为即使采用了其他系统平台,其可靠性也很高。

管道NV [/S2/]

pipenv是一种软件包管理工具,其目的是“为python提供世界上最好的软件包”。 通过将虚拟环境和软件包管理集成到一个工具中,pipenv在python社区受到了极大的关注。

另外,使用pip进行手动管理的依赖关系还解决了常见问题,如软件包版本、隔离开发和生产环境的依赖关系、生产环境版本的锁定等。

pipenv :新的python打包工具指南是好好学习pipenv及其软件包管理的入门资料。 这个文案的标签是中级的,但作者对网民有很好的诱惑。 开始学python的人也能理解这个文案。

拓扑结构/ S2 /

poetry是另一个备受瞩目的pip替代品。 与pipenv一样,简化了软件包的版本控制,将开发环境和生产环境的依赖性分离出来,隔离在一个虚拟环境中运行。

如果你知道javascript和npm,我想poetry会非常了解。 除了管理软件包外,还可以帮助您创建应用程序和库的发行版并将其部署到pypi。 向pypi公开开源python软件包的精彩poetry介绍的方法有助于入门。

总结:什么是pip?

本教程回答了问题:什么是pip? 我们知道,pip是python的软件包管理器,许多项目依赖于管理。 python安装程序包含pip,它是所有pythonista必须使用的基本工具。

虽然python提供了开发各种应用程序的标准库扩展,但是python活动的社区提供了加快python应用程序开发的工具和库。

这些工具和库将发布到python软件包索引( pypi ),开发人员可以使用pip将其安装在自己的环境中。

在本教程中,您将学习以下内容

1 .在命令行上使用pip和诉求文件安装新软件包

2 .管理依赖性、开发与生产环境的隔离以及锁定诉求文件的建立

3 .用pip和pypi搜索包

4 .在卸载软件包之前,确定软件包的依赖性以及如何卸载软件包。 此外,了解保持依赖性是最新的重要性,并允许pip的许多替代品管理这些依赖性。

标题:“pip是什么意思(Python新手入门指南)”

地址:http://www.hongyupm.com/gnyw/6210.html