订阅博客
收藏博客
微博分享
QQ空间分享

torrentkitty,什么是pip?Python新手入门攻略,虎口脱险

频道:娱乐消息 标签:汽车年检时间规定vegina 时间:2019年05月05日 浏览:206次 评论:0条

什么是 pip ?pip 是 Python 中的规范库办理器。它答应你装置和办理不属于 Python规范库 的其它软件包。本教程便是为 Python 新手介绍 pip。

经过本教程,你将学到:

1. 装置 Python 的规范发行版中未包含的其他软件包

2. 查找发布于 Python 包索引(PyPI)的包

3. 办理脚本和运用程序的装置需求

4. 卸载包及它的相关依靠

如你所见,Python 社区十分活泼,并且为 pip 创立了一些简练的代替方案,你能够在本教程稍后的部分看到。

pip 入门

那么,什么是 pip 呢?pip 是 Python 的包办理器。这意味着它是一个东西,答应你装置和办理不属于规范库的其他库和依靠。

软件包办理极其重要,所以自 Python3 的 3.4 版别以及 Python2 的 2.7.9 版别开端,pip 一向被直接包含在 Python 的装置包内,相同还被用于 Python 的其它项目中,这使得 pip 成为了每一个 Pythonista(Python用户)必备的东西。

假如你现已了解了其他言语,那么或许会对包办理器的概念比较了解。JavaScript 运用 npm 办理软件包,Ruby 运用 gem,以及 .NET 运用 NuGet。Python 中,则是 pip 作为规范包办理器。

Python 的装置器中自带了 pip,所以你能够直接运用它,除非你装置的是更早版别的 Python。你能够经过在操控台中运转以下指令来验证 pip 是否可用:

你应该能够看到一个相似的输出,显现 pip 的版别以及装置方位还有 Python 的版别。假如你运用的是不包含 pip 的旧版别 Python,你能够依据 pip 装置文档中相应体系的阐明进行装置。

你或许希望在虚拟环境中运用本教程的示例,以防止将包装置到 Python 的大局装置环境中。你能够从 Python 虚拟环境:入门级了解虚拟环境相关的信息,这篇文章的”运用虚拟环境“一节介绍了创立虚拟环境的根底知识。

运用 pip 装置软件包

Python 被认为是一种"内置电池"式的言语。这表明 Python 规范库包含许多的软件包和模块,这些模块有助于开发人员开发脚本和运用。

与此一起,Python 具有一个活泼的社区,它供给了一个更大的软件包调集,以供你开发所需。这些软件包发布在 Python Package Index,也被称为 PyPI(发音 Pie Pea Eye)。PyPI 保管了许多包,包含开发结构,东西和库。

其间许多软件包经过为已有功用供给了友爱地接口来简化 Python 开发。例如,你能够写一个脚本,仅运用 Python 规范库中的功用分析网页的内容:

脚本中,导入了 cgi 和 http.client,这两个都是在 Python 的规范库中。你创立了一个 HTTPSConnection 目标并指定服务器,然后调用 .request() 和 .getresponse() 解析呼应信息。

从呼应信息中,咱们解析torrentkitty,什么是pip?Python新手入门攻略,虎口脱险到 Content-Type 头信息并且运用 cgi 模块提取页面编码的字符集。

cgi.parse_header() 回来一个包含首要值和字典作为参数的元组。例如,Content-Type 头信息或许包含一个像 text/html; charset=ISO-8859-1 的值。

这个元组将字符串 text/html 作为第一个元素,第二个元素是 {'charset': 'ISO-8859-1'} 这样方法的字典。因为你只需求关怀 charset 参数,能够运用下划线疏忽元组的最初:_, params = cgi.parse_header(content_type)。

留意:Python 中下划线的痛经的原因意义解说了怎样从元组解包值。

对页面编码后,你能够阅览相应信息并解码到文本中。你能够在操控台中运转这个比方查看它是怎样作业的:

关于一个用于解析网页内容的小脚本来说,这看起来做的作业有点多。走运的是,有一个 Python dlna的包能够简化 HTTP 恳求并供给了一个友爱地接口来完结你的希望。

根底包装置

PyPI 保管了一个十分盛行的库 requests 来完结 HTTP 恳求。你能够经过它的官方文档站点了解一切的相关恩希玛信息。

第一步是在你的环境中装置 reque人工心脏sts 包。你能够运转 pip help 来了解 pip 支撑的指令:

如你所见,pip 供给了 install 指令来装置软件包。你能够运转它来装置 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,现在能够运用 ltorrentkitty,什么是pip?Python新手入门攻略,虎口脱险ist 指令查看你的环境中装置了哪些软件包。

如上所示,pip 现已晋级到了 19.0.1 版别(现在最新版别),并且装置了 requests 2.21.0 版别。

指令 pip install 会查找并装置软件包的最新版别。一起还会查找软件包元数据中的依靠列表,并装置这些依靠以保证软件包满意一切的需求。

这儿你能够看到装置了许多软件。你能够运用 pip 中的 show 指令查看包的元数据信息:

元数据中列出了依靠项 c牧原股份ertifi,chardet,idna 和 urllib3,并且你能够看到这些都现已装置好了。

已然现已装置了 requests 包,咱们能够修正上面的比方,来看看怎样更方便地解析网页的内容torrentkitty,什么是pip?Python新手入门攻略,虎口脱险:

因为你现已在开发环境中装置了 requests 包,能够像导入其他规范库相同导入它。

能够看到,requests.get() 处理了 HTTP 衔接并回来一个与之前比方相似的呼应,可是简练方便了许多。

因为 requests 现已帮你处理了大部分状况,所以你不需求考福田虑页面的编码问题。并且,requests 还经过 requests.Response 目标供给了一个愈加灵敏的接口来处理特殊状况。

运用 requirements.txt 需求文件

pip install 指令只会装置最新发布的软件包版别,可是有时分,你或许希望依据代码运转状况装置特定的版别。

你还希望在开发和测验时指定创立的依靠和版别,这样就能够在出产环境防止运用程序呈现意外状况。

需求文件能够准确指定需求装置的软件包和版别。运转 pip help 你能够看到一个 freeze 指令,它会依照格局化输出以现已装置的软件包。你能够运用这个指令,将输出重定向到文件以生成一个需求文件:

freeze 指令将一切软件包以及版别信息转储到规范输出,所以你能够重定向这些输出到文件中。这样就能够在其他体系中依据这个需求文件履行精准装置。约好这个需求文件名为 requirements.txt,可是你也能够依据个人喜爱命名。

假如你希望在其他体系中仿制你的开发环境,你能够运转 pip install 指令并用 -r 开关指定需求文件:

软件包的版别会依据 requirements.txt 所列出的进行匹配:

你能够将 requirements.txt 文件提交到资源操控器,这样就能够运用它在其它机器上创立精准匹配的环境了。

微调需求文件

软件包及其依靠的版别或许会导致硬编码问题,这是因为软件包会针对 bug 以及安全修正进行频频的更新,而你或许希望在它们发布后当即做出更改。

需求文件的格局答应你运用逻辑运算符指定依靠的版别,这为保证更新包供给了更多的灵敏性,可是依然要torrentkitty,什么是pip?Python新手入门攻略,虎口脱险界说一个包的根底版别。

运用你常用的编辑器并作以下修正:

你能够经过改动晕逻辑运算符为 >= 来奉告 pip 精准装置已发布的指定版别或更高版别。当你运用 requirments.txt 设置了一个新的环境,pip 会查找满意需求的最新版别并装置。你能够运用带有 --upgrade 开关的 install 指令来晋级你需求文件中界说的软件包:

这儿没有任何晋级操作,因为你的软件都是最新版别,可是假如在包列表中发布了新的版别,那么这个包就会被晋级到最新版别。

抱负状况下,新版别的包会向后兼容并且没有新引进的 bug。不幸的是,新版别引进的更改仍是或许会损坏你的运用程序。需求文新罗件的语法支撑额定的版别阐明符来微调你的需求。

比方说 requests 发布了新版别 3.0,可是有一些更改与你的运用程序不兼容。你能够经过修正需求文件来制止装置 3.0 版别以及更高的版别:

更改 requests 的版别操作符能够保证不会装置 3.0 或更高的版别。pip 的文档供给了悉数的需求文件格局,你能够查阅以了解更多相关信息。

出产与开发环境的依靠联系

你在开发期间装置的依靠并不都是你的运用程序的依靠。其间有许多发布到 PyPI 上的包,是你开发进程中想用到的东西或库。

比方说,你或许希望对你的运用做单元测验,你需求单元测验的结构。一个盛行的单元测验结构是 pytest。你希望在你的开发档案1974南海风云环境由小藜中装置它,可是却不希望在torrentkitty,什么是pip?Python新手入门攻略,虎口脱险出产环境也装置它,因为它不是运用的依靠。

这时你会创立第二个需求文件(requi粮票rements_dev.txt)来列出装备开发环境需求的东西:

这儿需求你运用 pip 装置两个需求文件:requirements.txt 和 requirements_dev.txt。还好,pip 答应在需求文件内部指定一些额定的参数。你能够需改 requirements_dev.txt 文件支撑一起装置出产文件 requirements.txt 中的需求:

留意这儿你运用了完全相同的 -r 开关来装置出产文件 requirements.txt。需求文件格局答应你在需求文件中指定其他参数。

为出产环境冻住需求文件

你现已创立了出产和开发环境的需求文件,并将它们添加到资源操控器中。这些文件能够灵敏 的指定版别,能够经过发布的依靠进行修正 bug。你还能够测验你的运用程序并为发布到出产环境做准备。

因为现已知道开发环境运用程序的一切测验现已正常经过,所以你或许希望保证出产环境的依靠版别与整合管道或构建进程中运用的完全相同。

现在的版别阐明符并不能保证会在出产环境布置完全相同的版别,所以你需求冻住阐明文件 ,像之前看到的那样。

你创立了一个洁净的出产环境,并运用 requirements.txt 文件装置了出产需求。装置完需求文件之后,你能够冻住当时这个特定的版别,并将输出转储到出产环境的 requirements_lock.txt 文件中。该 requirements_lock.txt 文件中包含准确的版别阐明符,并且能够仿制当时环境。

查找可用包

当你具有更多的 Python 经历之后,会有一套了解的软件包,并且能够用于大部分运用程序。包 requesta 与 pytest 关于弥补你的 Python 东西箱来说,都是很好的挑选。

有时你需求处理不同的问题,并想要找到一个能够协助你处理问题的东西或库。上面说到,指令 pip help 展现了一个指令 search,能够查找在 PyPI 上发布包。

咱们看看这个指令有什么用:

这个指令给出了一组选项以及一个 参数。query 是一个用于查找的字符串,能够匹配包名及描绘。

留意:你能够运用 pip help 检索其它支撑的指令的信息。

假定你的运用需求拜访一个运用 OAuth2 授权的服务。抱负状况下,会有一个库运用 requests 履行或许其它相似的接口完结。用 pip 到 PyPI 上查找一下:

search 指令选项生成了一个相当大的包调集。其间一些看起来像 django-oauth 这样指定了一个服务或技能。希望找到一个像是 requests-oauth 的信股票市场息。很不幸,除了简略的描绘,并没有其它信息。

大都状况下,你希望直接在 PyPI 的网站查找包。PyPI 为其索引供给了茶叶蛋查找功用,并经过包中揭露的元数据(如结构,主题,开发状况等)过滤查找成果。

PyPI 顶用同一个术语查找或许会发生许多的成果,不过你能够对它们进行分类过滤。比方,假如你想要找到能够协助你开发运用的库,你能够翻开 Intended Audience 并挑选 Dtorrentkitty,什么是pip?Python新手入门攻略,虎口脱险evelopers。别的,你或许还需求一个安稳且可用于出产的包,能够翻开 Development Status 并挑选 Production/Stable。

你能够运用其他过滤器以及调整查找词,直到找到你想要的包。

查找成果供给了一个包页面的链接,包含了更多的信息以及想要的文档。下面咱们看看 requests-oauth2 的信息:

这个项目页面供给了更多的信息,并且看起来还有一个指向 Home 页的链接。该链接指向 Github 上的项目库房。你能够看到项目相关的更多信息以及一些运用示例。

看到初始源代码库房,像是找到了无价的财富。在那里,你能够经过查看最新的提交日志,PR(pull request)次数以及翻开的 issues 等问题来找到一些项目的状况和提示。

别的还有一个查找包的方法,Google。被广泛运用的 Python 库会展现在 google 查找的顶部,并且你应该能看到指向 PyPI 中包或许源代码库房的链接。

找到一个适宜包需求花费一些时刻研讨,可是只需找神偷冥王妃到了,就能够为你的开发进程提速。

卸载包

有时分你不得不卸载一个软件包。要么是你找到了一个更好的包来代替它,要么是的确不需求某些功用了。卸载软件包会有一些扎手。

留意这儿,当你装置了 requests,pip 一起也装置了其他的依靠。你装置的包越多,多个包具有相同的依靠的或许性越大。这儿 pip 的 show 指令就派上用场了。

卸载包之前,先保证你现已对这个包运转了 show 指令:

留意最终的两个特点 Requires 和 Required-by。show 指令向咱们展现了 requests 需求依靠 urllib3,certifi,chardet 和 idna。你或许希望卸载其间的两个。并且你能够看到 requests 没有被其他包引证,所以它能够安全地卸载。

你应该对 requests 中一切的依靠都运转一下 show 指令,以保证没有其他库依靠它们。你了解了这些依靠次第之后,就能够运用 uninstall 指令来卸载它们。

卸载包会显现即将删去的文件并要求承认。假如你承认要卸载这个包并且现已查看了它的依靠联系,知道没有其他包在运用这个包,那么能够运用 -y 开关来躲藏文件列表和承认提示信息:

你能够一次调用指定一切你想卸载的包:

你还能够经过供给torrentkitty,什么是pip?Python新手入门攻略,虎口脱险 -r 选项来删去需求文件中列出的悉数软件包。这个指令会对每一个包都提示承认信息,假如你现已清晰知晓你的操作,能够经过 -y 开关制止这些提示:

在你想要卸载包时,一向都要记住查看一遍依靠项。你或许希望卸载一个软件包的一切依靠,不过假如有其它软件包在运用这些依靠,会导致程序溃散。

pip 的代替品

pip 是一切 Pythonista 必备的根本东西,许多运用程序和项目运用它作为软件包办理器。本教程协助你了解根底知识,而 Python 社区十分活泼的为其曼若姿它开发人员供给了很棒的东西和库。其间包含 pip 的代替品,希望完结简略高效的包办理。

在本节,你将了解到 Python 中其它可用的包办理东西。

全能的 Conda

Conda 是一个包含 Python 在内的多种言语的包、依靠及环境办理器。实际上,它最早来源于 Anaconda,作为 Python 中研讨数据科学的包呈现。

Conda 广泛用于数据科学色电和机器学习运用程序,并运用自己的索引来保管兼容的软件包。

Conda 不只能够办理包的依靠项,还能够办理运用的虚拟环境,装置兼容并存的 Python 版别,为出产布置打包运用。

在 Windows 体系上为机器学习设置 Python 很好的介绍了 Conda,它探讨了包和环境办理。仅有与 Windows 相关的特定信息是装置,因而假如你运用的是其他体系渠道,它依然是可信的。

Pipenv

Pipenv 是别的一种包办理东西,旨在为 Python “供给全世界最好的包”。因为将虚拟环境与包办理合并到一个东西中,pipenv 在 Python 社区获得了极大的重视。

它还处理了在运用 pip 手动办理依靠联系是遇到的一些常见问题,比方,包的版别,阻隔开发与出产环境依靠,确定出产环境版别等。

Pipenv:新的 Python 打包东西攻略是一份很好的学习 Pipenv 及其包办理的入门资料。虽然这篇文章的标签是中级,可是作者对读者做了很好的引导,初学 Python 的人也能了解这篇文章。

Poetry

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 文档页面获取更多信息。

英文原文:https://realpython.com/what-is-pip/译者:敦伟