首页 > 编程知识 正文

安装requests(python的pip安装)

时间:2023-05-06 12:57:18 阅读:103098 作者:2896

【回复“python”,送你十本电子书】

更正:昨天图文中提到的xldjz老师组织的翻译版本地址是https://github.com/carfly/thinkpython-cn.另外,《Think Python》最新版本的翻译已经有两名同学加入,后续微信号更新的步伐可能会加快。其他希望参与的学生也可以选择翻译这本书的代码库:https://github.com/bingjin/ThinkPython2-CN.

作者:邋遢的百褶裙赖茨

原发布日期:2016年2月25日

译者:EarlGrey@程序员

本文最初由程序员学校整理,最早发表在微信官方账号的“程序员学校”。

知名Python第三方库的作者,如requests:邋遢的百褶裙Reitz

现在,在开发Python应用程序时,将requirements.txt文件添加到代码库的根目录已经成为一种标准做法。

这个文件有许多用途。一般有以下两种形式:

项目的顶层依赖项列表,通常不指定版本号。

项目的所有相关包的列表,每个包都分配有一个版本号。

01

方法1:简单的需求文件

项目的顶层依赖包列表通常不指定版本号。

$ catrequirements . txt requests[security]flaskg unicorn==19 . 4 . 5方法1非常简单,也是每个使用需求文件的开发人员都想要的用户体验。但是,如果将这样的requirements.txt文件部署到生产环境中,可能会出现意外问题。因为没有指定版本号,运行pip安装后,今天安装的Python包可能和明天安装的不一样。

这很糟糕。因为子依赖包可能会频繁更新版本号,所以重新运行pip install -r requirements.txt可能允许您安装不同的Python包。这可能会使您的应用程序由于未知原因而无法运行。

2

方法2:准确的需求文件

项目的所有相关包的列表,每个包都分配有一个版本号。

$ cat requirements . txt cffi==1 . 5 . 2 cryptography==1 . 2 . 2 enum 34==1 . 1 . 2 flask==0 . 10 . 1 guni corn==19 . 4 . 5 idna==2.0 IP address==1 . 0 . 16 itshariable==0.24 jinja 2==2.8M Upsafe==0.23 NDG-HTTPS客户端==0.4.0 pyasn1==0.1.9 pyc解析器==2.2

的所有依赖包(包括子依赖包)都已清楚列出,并指定了它们各自的版本号。

这种类型的requirements.txt是通过在应用程序的当前工作环境下运行pip freeze命令自动生成的。这种方法鼓励开发人员平等地对待开发/生产环境(DEV/PRODUCTITY),并像对待自己的应用程序代码一样对待外部依赖包(因为它们也是您的应用程序代码的一部分)。

麻烦

虽然方法2是使用requirements.txt的最佳实践,但实际上有点麻烦。例如,如果我有一个很大的代码库,并且想通过pip install - upgrade命令更新部分或全部Python包,我就不能轻松做到这一点。

我以前的方法是一个接一个地挑选顶层依赖包,然后手动输入pip安装请求[安全]标志-升级。这个过程并不容易。

我想了很久,也想过开发一个工具来解决这个问题。当然,已经有像pip-tools这样的工具了。然而,我不想给我的工具链增加任何东西。这个问题应该通过使用现有的工具来解决。

最后我想出了一个很好的解决方案,利用我现有的工具解决了这个问题,同时具备了方法1和方法2的优点。我在项目中使用这个工作流程已经有一段时间了,对结果非常满意。

工作流程

其实很简单:我们不只是放一个需求文件,而是放两个:

冻结需求. txt

requirements.txt

requirements-to-freeze.txt

请求[安全]烧瓶gunicorn==19.4.5

requirements.txt

cffi==遵循的是方法1,文件中说明了项目的顶层依赖包,以及你需要指定的明确版本号。

requirements.txt遵循的是方法2,其中的内容是运行点安装要求-冻结。文本文件(textfile)命令后皮普,别动生成的。

基本用法

美元cd项目-回购$ pip安装-r要求-待修复。txt-升级安装收集的软件包:六、enum34、IP地址、$ pip冻结需求。文本文件(textfile)鱼与熊掌,二者兼得。

我建议你尝试一下这个工作流,很有可能会避免你未来碰到构建失败等问题。

.

最新版《Think Python》 中文翻译计划

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。