3.4 KiB
doc_type, full_text
| doc_type | full_text |
|---|---|
| short | sources/03_Distribution.md |
03_Distribution 总结
本文介绍 Python 项目分发的最基础流程:通过 setup.py 描述项目元数据与包结构,通过 MANIFEST.in 声明额外文件,使用 python setup.py sdist 创建源码分发包,并让他人通过 pip 安装该包。该内容是课程中的传统入门示例,用于理解源码分发的基本思想;现代项目通常应参考 Python Packaging User Guide,并使用 pyproject.toml 与 python -m build 等当前实践。该主题也与 pip、虚拟环境 和 Python项目结构 相关。
核心内容
1. 创建 setup.py
项目顶层目录需要添加 setup.py 文件,用来描述包的基本元数据,并调用 setuptools.setup() 完成打包配置。
示例信息包括:
name:包名,例如portyversion:版本号,例如0.0.1author/author_email:作者信息description:项目描述packages=setuptools.find_packages():自动发现项目中的 Python 包
这一步是 Python 代码能够被打包和安装的基础。
2. 创建 MANIFEST.in
如果项目中包含 Python 源码之外的额外文件,需要使用 MANIFEST.in 声明它们。
例如:
include *.csv
这表示将顶层目录中的 .csv 文件包含进源码分发包。MANIFEST.in 应与 setup.py 放在同一目录。
3. 创建源码分发包
运行以下命令:
python setup.py sdist
该命令会在 dist/ 目录下生成 .tar.gz 或 .zip 文件。这个文件就是可以分发给他人的 Python 源码包。
需要注意:这是课程材料中的传统最小流程,不应被理解为现代项目的唯一推荐做法。实际项目应优先查看 Python Packaging User Guide 中关于 pyproject.toml、构建后端和 python -m build 的当前说明。
4. 安装分发包
其他用户可以使用 pip 安装生成的分发文件,例如:
python -m pip install porty-0.0.1.tar.gz
这使自定义项目能够像普通第三方包一样被安装和使用。
重要观点
- 本文只覆盖 Python 打包分发的“最小可行流程”。
python setup.py sdist是传统示例;现代项目通常使用pyproject.toml和构建工具创建分发物。- 实际项目可能涉及更复杂的问题,例如:
- 第三方依赖管理
- C/C++ 扩展模块
- 非 Python 资源文件
- 更完整的包元数据
- 发布到包索引服务
- 课程建议更深入的内容参考 Python Packaging User Guide。
练习 9.5:制作一个包
练习要求将 Exercise 9.3 中创建的 porty-app/ 项目进行打包:
- 在项目顶层添加
setup.py - 添加
MANIFEST.in - 运行:
python setup.py sdist
- 最后尝试将生成的包安装到 Python 虚拟环境中,以验证打包结果是否可用。
相关概念
- Python打包分发:如何把 Python 项目组织成可分发、可安装的软件包。
- Python项目结构:项目顶层目录、包发现、资源文件放置等结构性问题。
- pip:Python 包安装工具,用于安装源码包或第三方依赖。
- 虚拟环境:隔离安装与测试 Python 包的推荐环境。