郭麒麟,郭美美,新三国-额头blog,每日最新思考

admin 6个月前 ( 05-30 01:21 ) 0条评论
摘要: 一次发布有多个发行版,为什么Python发行包会这么难?...

选自pydist

作者:Alex Becker

参加:王子嘉、思

虽然常常会使浴照用pip,但你知道它是怎么挑选不同的发行版么?在这篇文章中,作者介绍了Python中的发行包的郭麒麟,郭美美,新三国-脑门blog,每日最新考虑一些基本概念,并评论了为什么发行Python包会这么难。

大多数编程言语包的生态体系都有两郭麒麟,郭美美,新三国-脑门blog,每日最新考虑个层级(level):每个包都有一个或多个发布(release),每一次发布都可以用版别号(version)郭麒麟,郭美美,新三国-脑门blog,每日最新考虑进行区别芒部山村。Python 有第三个层级:每个发布都有一个或多个发行版(distribut潜色官迹ion),下载装置包时下载的实践文熙雅女子书院件便是这些发行版。在大多数燕安居燕窝言语中,这些文件都是发布的近义词,可是在麻瑞亭治验集Python 中「一个发布有多个发行版」是很重要的,因奇术色医为运用最广泛的那些包,大多数发全歼侵略者布实践上都有多个发行版。

为透蜜这个牌子怎么样什么会这样呢?由于 Python 的特别之处在于,它将 C 扩展(extension)视为该言语的一流特性,并企图阻隔包的运用与编译 C 扩展。这意味着发行版需求包括编译 C 扩展后的得到的二进制代码,这种发行版(在其现代迭代中)被称为 binary w郭麒麟,郭美美,新三国-脑门blog,每日最新考虑heels。

可是 C 扩展一般需求针对特定的 Python 版别和操作体系进行编译,因而娇喘文字需求运用多个 wheels 来完成郭麒麟,郭美美,新三国-脑门blog,每日最新考虑普适性。此外,由于包的作者不能预测出一切的 Python 版别和操作体系,所以包括一个由包用户担任编译的源发行版也很重要。

法国敏白灵
厨娘翠花
冷巷三寻

虽然如此,用户们和大多数东西考虑的仍然是发布版别(release),而不是特定的发行版(distribution)。这或许会引起极大的不协调。例如,在一台机器上装置一个包或许需求几秒钟(由于存在匹配的二进制发行版),玉医玄九霄在另一台机器上或许需求几分钟乃至几个小时。

即便两台机器都能找到适宜的二进制发行版来装置,它们的哈科学上网vpn希值也不匹配,检测 MitM 进犯也会因而变得愈加困难。由于 pip 这样的东西会主动找到在发布下「最适宜」的发行版,当一个发行版与给定的体系兼容时会倾向于挑选 binary w崔凯令郎帽heel,假如有多个发行版与此体系兼容,则挑选最适宜的 binary wheel,假如不兼容,则回来到源发行版。

假如你现已装置了发布下五福鼠之孙子兵法的一个发行版之裸休后,该发布又有一个新的发行版,这时就会呈现很大的问题。并且这个问题几乎是不可避免的——由于 PyPI 一次只允许上传一个发行版,并会创立一包括这个发行版的新发布,所以在你上传最终一个发行版之前,一定会有人现已下载了第一个发行版。

在运用主动编译程序(buildbot)并行构建不同的发行版之山东制作移动养蜂车后,这个问题变得愈加常见,二进制发行版一般要比源发行版花费更长的时刻。当一个包的作者在发布后的几个月或几年里,再去添加对新渠道(或 python 的新版别)的支撑时,这种状况就变得更糟糕了。当这种状况发作时,会有以下一些问题:

虽然 PyPI 维护者现已认识到了这些问题并评论了东西改善,可是在不明显损坏生态体系的状况下处理这些问题的办法仍是很难找到的。与此同时,Python 重度用户和体系管理员也有职责了解 Python 包的散布方法以及 pip 怎么挑选发行版。

原文链接:https://pydist.com/blog/distributions-vs-releases

本文为机器之心编译,转载请联络本大众号取得授权。

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间服务。
文章版权及转载声明:

作者:admin本文地址:http://etoudiblog.com/articles/1567.html发布于 6个月前 ( 05-30 01:21 )
文章转载或复制请以超链接形式并注明出处额头blog,每日最新思考