如何在没有 setup.py 的情况下为 python 项目创建 deb 包
How to create a deb package for a python project without setup.py
我找到的关于此主题的任何文档都提到构建 deb 包的“唯一”要求是具有正确的 setup.py
(和 requirements.txt
)。例如在 dh-virtualenv tutorial, stdeb documentation and the Debian's library style guide for python.
但是如今 poetry allow to develop (and upload to PyPI) python projects without any setup.py
(this file and several others including requirements.txt
are all replaced by pyproject.toml
). I believe flit 等新的(令人惊叹的)工具也允许这样做。
我开发了一个由 poetry 管理的 python 项目,并想将其打包用于 Ubuntu/Debian。我想,作为一种解决方法,我仍然可以编写一个 setup.py
文件,该文件将从 pyproject.toml
和一个 requirements.txt
文件中获取其值(使用 poetry.lock
中的值手动编写)。
但是,有没有办法在没有任何 setup.py
文件的情况下做到这一点?
setuptools
,以及它所需要的setup.py
文件,在python中作为de-facto打包标准的时间最长。您提到的新包管理器是通过引入 PEP 517
and PEP 518
(or read this 来启用的,以获得关于该主题的 high-level 描述),它提供了一种无需 setup.py
即可指定构建后端的标准化方法(以及随之而来的 hen-egg 问题,您已经需要 setuptools
才能正确解析它)。
总之,一切都还很新鲜,linux 打包社区还没有跟上。我发现最近没有关于 debian 软件包的讨论,但是 rpm
方面对它进行了巧妙的总结 over here.
所以,简短的回答就是等一会儿,google debian packaging pep517 support
时不时地。
到那时,您可以使用 dephell
生成 setup.py
,并使用 poetry
为您生成 requirements.txt
作为继续使用现有工具的解决方法:
dephell deps convert --from=poetry --to=setuppy
poetry export -f requirements.txt -o requirements.txt
并且,在构建期间,告诉您的 pyproject.tom
您计划使用 setuptools
而不是 poetry
:
[build-system]
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"
我找到的关于此主题的任何文档都提到构建 deb 包的“唯一”要求是具有正确的 setup.py
(和 requirements.txt
)。例如在 dh-virtualenv tutorial, stdeb documentation and the Debian's library style guide for python.
但是如今 poetry allow to develop (and upload to PyPI) python projects without any setup.py
(this file and several others including requirements.txt
are all replaced by pyproject.toml
). I believe flit 等新的(令人惊叹的)工具也允许这样做。
我开发了一个由 poetry 管理的 python 项目,并想将其打包用于 Ubuntu/Debian。我想,作为一种解决方法,我仍然可以编写一个 setup.py
文件,该文件将从 pyproject.toml
和一个 requirements.txt
文件中获取其值(使用 poetry.lock
中的值手动编写)。
但是,有没有办法在没有任何 setup.py
文件的情况下做到这一点?
setuptools
,以及它所需要的setup.py
文件,在python中作为de-facto打包标准的时间最长。您提到的新包管理器是通过引入 PEP 517
and PEP 518
(or read this 来启用的,以获得关于该主题的 high-level 描述),它提供了一种无需 setup.py
即可指定构建后端的标准化方法(以及随之而来的 hen-egg 问题,您已经需要 setuptools
才能正确解析它)。
总之,一切都还很新鲜,linux 打包社区还没有跟上。我发现最近没有关于 debian 软件包的讨论,但是 rpm
方面对它进行了巧妙的总结 over here.
所以,简短的回答就是等一会儿,google debian packaging pep517 support
时不时地。
到那时,您可以使用 dephell
生成 setup.py
,并使用 poetry
为您生成 requirements.txt
作为继续使用现有工具的解决方法:
dephell deps convert --from=poetry --to=setuppy
poetry export -f requirements.txt -o requirements.txt
并且,在构建期间,告诉您的 pyproject.tom
您计划使用 setuptools
而不是 poetry
:
[build-system]
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"