首页 > Python基础教程 > Python打包和发布
阅读:1,711
Python打包的发展历程
Python 打包一开始可能有些难以理解,其主要原因是不了解创建 Python 包的正确工具。但不管怎样,一旦创建好第一个包,就会发现其实它并没有想象的那么难。
即便你对将代码开源分发不感兴趣,也应该知道如何创建一个完整的包,因为这可以让你深入了解打包生态系统,有助于使用 PyPI 上可用的第三方代码。此外,将闭源项目或者其组件编程源代码发行包,有助于你在不同的环境中部署代码。
一切都从 1998 年引入的 distutils 包开始,随后在 2003 年对 setuptools 进行改进,这两个项目开启了一段漫长而又纠结的故事,包括派生(fork),替代项目与完全重新编写,都想要彻底修复 Python 的打包生态系统。
然而不幸的是,大部分尝试非但没有成功,每个想要取代 setuptools 或 distutils 的新项目都只是给打包工具十分混乱的状态添乱而己。其中,有些派生被合并回它们的祖先中(例如 setuptools 派生的 distribute),有些则直接被弃用(distutils2)。
这种混乱的状态直到成立了被称为 Python Packaging Authority(简称 PyPA)的组织,将秩序和组织性带回到打包生态系统中。PyPA 维护的 Python 打包用户指南(Python Packaging User Guide)是关于最新打包工具和最佳实践的权威信息来源。
这份指南包含详细的历史变化以及与打包相关的新项目,因此,如果你已经了解一些内容,但想要确保使用的是正确的工具,那么这份指南是很有用的。
由于 PyPA 的参与,构建发行版已经正在逐步弃用 egg 格式,而是支持使用 wheel 格式,未来可能会带来全新的方法。另外,PyPA 正在积极开发 warehouse,其目的是完全替代当前的 PyPI 实现,这将是打包历史上迈出的一大步,因为 PyPI 是如此古老且被忽视的项目。
PyPA 推荐用于安装包的工具:
PyPA 推荐包的创建与分发的工具如下:
即便你对将代码开源分发不感兴趣,也应该知道如何创建一个完整的包,因为这可以让你深入了解打包生态系统,有助于使用 PyPI 上可用的第三方代码。此外,将闭源项目或者其组件编程源代码发行包,有助于你在不同的环境中部署代码。
Python打包的混乱状态
Python 打包曾经在很长一段时间内处于混乱不堪的状态,人们花了很多年才使其重新变得有组织。一切都从 1998 年引入的 distutils 包开始,随后在 2003 年对 setuptools 进行改进,这两个项目开启了一段漫长而又纠结的故事,包括派生(fork),替代项目与完全重新编写,都想要彻底修复 Python 的打包生态系统。
然而不幸的是,大部分尝试非但没有成功,每个想要取代 setuptools 或 distutils 的新项目都只是给打包工具十分混乱的状态添乱而己。其中,有些派生被合并回它们的祖先中(例如 setuptools 派生的 distribute),有些则直接被弃用(distutils2)。
这种混乱的状态直到成立了被称为 Python Packaging Authority(简称 PyPA)的组织,将秩序和组织性带回到打包生态系统中。PyPA 维护的 Python 打包用户指南(Python Packaging User Guide)是关于最新打包工具和最佳实践的权威信息来源。
这份指南包含详细的历史变化以及与打包相关的新项目,因此,如果你已经了解一些内容,但想要确保使用的是正确的工具,那么这份指南是很有用的。
Python打包的现状
PyPA 除了提供一份权威的打包指南之外,还维护着打包项目与新的官方打包的标准化过程,前面章节中己经提到过其中一些项目,最有名的例如 pip、virtualenv、twine 和 warehouseo。注意,其中大部分项目都是在这个组织之外开始的,只是作为一个成熟且广泛使用的解决方案迁移到 PyPA 下而已。有兴趣的读者可参阅 PyPA 官方网站做详细了解。
由于 PyPA 的参与,构建发行版已经正在逐步弃用 egg 格式,而是支持使用 wheel 格式,未来可能会带来全新的方法。另外,PyPA 正在积极开发 warehouse,其目的是完全替代当前的 PyPI 实现,这将是打包历史上迈出的一大步,因为 PyPI 是如此古老且被忽视的项目。
PyPA打包工具推荐
Python 打包用户指南有关使用包的推荐工具给出了一些建议。这些工具大体可分为两组,分别是用于安装包的工具和用于包的创建与分发的工具。PyPA 推荐用于安装包的工具:
- 使用 pip 安装来自 PyPI 的包。
- 将 virtualenv 或 venv 用于 Python 环境的应用级隔离。
PyPA 推荐包的创建与分发的工具如下:
- 使用 setuptools 来定义项目并创建源代码发行版。
- 使用 wheel 而不是 egg 来构建发行版。
- 使用 twine 向 PyPI 上传包的发行版。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频