I'm learning about Python packaging, and according to this guide, the command to build a python distribution package seems to be python3 -m build.
But I aslo found that there is a command line interface for setup.py file from setuptools:
$ python setup.py --help-commands
Standard commands:
build build everything needed to install
sdist create a source distribution (tarball, zip file, etc.)
bdist create a built (binary) distribution
bdist_dumb create a "dumb" built distribution
bdist_rpm create an RPM distribution
...
It seems that python setup.py build, sdist or bdist can aslo build distribution, but I didn't find detailed intructions for these commands, the setuptools command reference lacks explanation for build sdist bdist.
So I'm a bit confused, what is the difference between python setup.py build and python -m build, or between python setup.py sdist and python -m build --sdist? Is the python setup.py command deprecated hence the lack of full documentation? When should I use python -m build or python setup.py build?
Any help would be appreciated.
Update:
The doc of build module says “build is roughly the equivalent of setup.py sdist bdist_wheel but with PEP 517 support, allowing use with projects that don’t use setuptools”.
So should I always prefer build module rather than running python setup.py manually?. Is there still a use-case for setup.py build?
Citing Why you shouldn't invoke setup.py directly by Paul Ganssle.
Here's a summary table of the setup.py way and the newer recommended method:
| setup.py | New command |
|---|---|
| setup.py sdist | python -m build (with build) |
| setup.py bdist_wheel | python -m build (with build) |
| setup.py test | pytest (usually via tox or nox) |
| setup.py install | pip install |
| setup.py develop | pip install -e |
| setup.py upload | twine upload (with twine) |
| setup.py check | twine check (this doesn't do all the same checks but it's a start) |
| Custom commands | tox and nox environments. |
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With