python - 如何在没有 setup.py 的情况下为 python 项目创建 deb 包

标签 python packaging setup.py deb python-poetry

我找到的有关此主题的任何文档都提到构建 deb 包的“唯一”要求是拥有正确的 setup.py (和 requirements.txt )。例如在 dh-virtualenv tutorial , stdeb documentationthe Debian's library style guide for python .
但是现在新的(惊人的)工具,如 poetry允许开发(并上传到 PyPI)python 项目而无需任何 setup.py (这个文件和包括 requirements.txt 在内的其他几个文件都被 pyproject.toml 替换了)。我相信flit也允许这样做。
我开发了一个由诗歌管理的python项目,并想将其打包为Ubuntu/Debian。我想,作为一种解决方法,我仍然可以写一个 setup.pypyproject.toml 取值的文件和一个 requirements.txt文件(使用来自 poetry.lock 的值手工编写)。
但是,有没有办法在没有任何 setup.py 的情况下做到这一点?文件?

最佳答案

setuptools ,以及 setup.py它需要的文件,长期以来一直是python中事实上的打包标准。您提到的新包管理器是通过引入 PEP 517 启用的。和 PEP 518 (或阅读 this 以获取有关该主题的高级描述),它提供了一种无需 setup.py 即可指定构建后端的标准化方法。 (以及随之而来的鸡蛋问题,您已经需要 setuptools 来正确解析它)。
反正一切都还很新鲜,linux打包社区还没有跟上。我发现最近没有关于 debian 软件包的讨论,但是 rpm边总结得好over here .
所以,简短的回答是稍等片刻,然后谷歌 debian packaging pep517 support时不时。
在此之前,您可以使用 dephell 生成 setup.py为您提供解决方法:

dephell deps convert --from=poetry --to=setuppy
并且,在构建过程中,告诉您的 pyproject.tom您打算使用 setuptools用于构建而不是 poetry :
[build-system]
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"

关于python - 如何在没有 setup.py 的情况下为 python 项目创建 deb 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63304163/

相关文章:

python - 如何检查 setup.py 中运行的是哪个命令?

java - 将 Python 生成的 protobuf 转换为没有 .proto 文件的 java

python ex48 硬方法 没有名为 ex48 的模块

linux - 如何为静态文件创建原生 Debian 包?

带有公司签名 SSL 证书的 Python setuptools

python - 自定义 Python 包无法通过 VirtualEnv 中的 Pip 正确安装

python - 处理基于其他字段的 Django 模型字段的要求

python - 理解 "item for item in list_a if ..."Python

c# - 创建一组文件的打包二进制表示?

python-3.x - 如何在我的自定义 python 包中包含自动下载?