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