简体   繁体   中英

How to create a deb package for a python project without setup.py

Any documentation I've found about this topic mentions that the "only" requirement to build a deb package is to have a correct setup.py (and requirements.txt ). For instance in dh-virtualenv tutorial , stdeb documentation and the Debian's library style guide for python .

But nowadays new (amazing) tools like 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 allows this too.

I have developed a python project managed by poetry and would like to package it for Ubuntu/Debian. I guess, as a workaround I can still write a setup.py file that would take its values from pyproject.toml and a requirements.txt file (written by hand using values from poetry.lock ).

But, is there a way to do this without any setup.py file?

setuptools , and the setup.py file that it requires, has been the de-facto packaging standard in python for the longest time. The new package managers you mention were enabled by the introduction of PEP 517 and PEP 518 (or read this for a high-level description on the topic), which provide a standardized way of specifying the build backend without the need of a setup.py (and the ensuing hen-egg problem where you already need setuptools to correctly parse it).

Anyway, it's all still very fresh, and the linux packaging community hasn't caught up yet. I found no recent discussion regarding debian packages, but the rpm side sums it up neatly over here .

So, the short answer is to just wait a while, and google debian packaging pep517 support every now and then.

Until then, you can use dephell to generate the setup.py for you as a workaround:

dephell deps convert --from=poetry --to=setuppy

And, during the build, tell your pyproject.tom that you plan to use setuptools for the build instead of poetry :

[build-system]
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM