Python语言的短板与解决办法
极客时间编辑部
讲述:丁婵大小:2.03M时长:04:26
多年以来,Python 语言一直受到应用程序打包以及项目管理等问题的困扰,好在,Python 自身、第三方 Python 工具以及库开发者们积极尝试解决这些挑战的具体方法。近日,技术作者塞尔达·耶古拉普(Serdar Yegulalp)将这些问题及解决方案列出,以供开发者参考。
Python 打包与独立可执行文件
问题:即使是在 30 年之后,Python 仍然没能拿到理想的方法,用以将程序或脚本转换为自打包可执行文件,并轻松部署在多种平台之上。
虽然这一目标已经有办法实现,但依靠的主要是第三方工具,而非 Python 的原生功能。此外,其使用难度也不太友好。
最具知名且最受支持的当数 PyInstaller ,它能够打包多种广受喜爱的高人气第三方扩展,例如 NumPy。不过 PyInstaller 必须与这些第三方扩展手动保持同步,而这在 Python 的庞大生态系统中无疑是一项艰巨的任务。此外,PyInstaller 会生成超大的应用程序包,因为其中捆绑有程序 import 语句中所要求的全部内容,而且并不确定在运行时究竟会用到哪些组件。而且 PyInstaller 也无法实现跨平台应用程序打包,开发者必须在目标部署平台上进行包创建。
解决方案:开发人员需要一套 Python 原生解决方案——无论是内置形式,还是通过标准库提供。它应当允许开发人员以独立二进制文件的形式将 Python 应用程序打包并交付至各类常见的平台。理想情况下,这款内置的打包器应该利用运行时代码覆盖率信息确保仅打包所需的库(而非所有内容),并能够自动与其余 Python 库保持同步。
目前还没有这样的解决方案存在,但关于如何构建此类工具的提示倒是有许多。
PyOxidizer 项目使用 Rust 语言生成能够嵌入 Python 的二进制文件,并将此作为创建独立 Python 应用程序的一种方法。虽然该项目尚处于起步阶段,距离成为完整的应用程序交付方案还有很长的路要走,但这足以证明 Python 生态系统之外的成果也许会成为解决挑战的关键。
Python 安装、软件包管理与项目管理
问题: 有些使用体验太过复杂,比如为专业级 Python 项目设置工作区、目录结构与基本架构;管理与项目相关的环境、软件包及依赖项;以可重复方式重新分配项目来源并一次又一次不断进行这个过程。
Rust 与 Go 这两种语言,在初始设计阶段就强调提供一种单一且规范的项目设置方式,并允许开发者在整个生命周期之内对其进行轻松管理。Rust 与 Go 开发人员虽然因此牺牲掉了一定程度的灵活性,但却换来了良好的一致性、可预测性以及可管理性。
Python 提供的安装、软件包以及项目管理工具与方法,随着时间推移而不断积压,并成为 30 年发展周期中的一笔重大负担。
解决方案:理想的解决方案是替换这些乱如麻的工具与流程,由 Python 核心开发团队拿出一套规范性的解决方案,同时确保其能够优雅地迁移一切利用现有方法开发出的项目。当然,这是个很难解决的挑战,但随着 Python 语言变得越来越重要,开发者必须努力让它成为一款易于上手、维护简单、一致性强且友好舒适的编程工具。
目前这方面工作已经有所进展。根据 PEP 518 提案,Python 的 build 依赖项被合并为 pyproject.toml 文件格式,而像 poetry 这样的第三方工具虽然只能打包现有工具,但已经体现出一体化管理产品的样貌。随着时间的推移,其中一种解决方案也许会脱颖而出,受到整个社区的关注,并成为客观层面甚至是范式性的处理标准。
以上就是今天的内容,希望对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- John一針見血
- Timo期待
收起评论