Python打包指南2021

Python打包指南2021

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

本文介绍了Python打包的最新指南,重点在于setup.py的编写和PEP 517的应用。作者强调了使用twine上传包的正确方法,如何指定依赖、发布可执行程序和包含数据文件。PEP 517使构建过程更加灵活,支持使用pyproject.toml替代setup.py,简化了包管理和构建流程。

🎯

关键要点

  • 本文介绍了Python打包的最新指南,重点在于setup.py的编写和PEP 517的应用。
  • setup.py的编写涉及指定依赖、发布可执行程序和包含数据文件。
  • PEP 517使构建过程更加灵活,支持使用pyproject.toml替代setup.py,简化了包管理和构建流程。
  • 使用twine工具上传包是推荐的方法,避免使用过时的上传方式。
  • PEP 517提案后,所有的PyPI包必须通过wheel格式安装,确保符合PyPA规范。
  • pyproject.toml文件中定义了构建系统的要求和后端,允许不同的构建后端组合使用。
  • setup.py作为元数据定义格式存在问题,PEP 621提供了新的元数据配置格式,使用pyproject.toml定义。

延伸问答

如何编写setup.py文件以指定依赖?

可以使用install_requires和extras_require来指定依赖,例如:setup(install_requires=['flask'], extras_require={'mysql': ['mysqlclient']})。

PEP 517对Python包构建有什么影响?

PEP 517使构建过程更加灵活,支持使用pyproject.toml替代setup.py,简化了包管理和构建流程。

使用twine上传Python包的正确方法是什么?

推荐使用twine工具上传包,命令为$ twine upload dist/*,避免使用过时的上传方式。

pyproject.toml文件的作用是什么?

pyproject.toml文件定义了构建系统的要求和后端,允许不同的构建后端组合使用。

为什么不推荐使用python setup.py install?

因为在PEP 517发布后,所有的PyPI包必须通过wheel格式安装,使用setup.py install不符合最新规范。

setup.py的元数据定义格式存在哪些问题?

setup.py作为元数据定义格式存在无法静态解析和注入恶意代码的风险,因此需要新的格式,如PEP 621。

➡️

继续阅读