Distributing Your ApplicationΒΆ
Note
This is an optional step. It is not required nor expected that every application is built to be distributed to a package index. However, even when building personal projects, defining it as a distributable artifact can provide many advantages when it comes to optimizing your build for a Docker image or other "production" hardened environments that should not mirror your local development environment exactly.
Once your application works properly, you can create a "sdist" or "wheel" from
it by using a PEP517-compliant client tool. The following commands assume your
current working directory contains the tutorial
package and the
pyproject.toml
file.
On Unix:
$VENV/bin/pip install build
$VENV/bin/python -m build
On Windows:
%VENV%\Scripts\pip install build
%VENV%\Scripts\python -m build
The output of such a command will be something like:
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools)
* Getting build dependencies for sdist...
...
removing build/bdist.linux-x86_64/wheel
Successfully built tutorial-0.0.tar.gz and tutorial-0.0-py3-none-any.whl
This command creates a subdirectory named dist
.
Inside that is a tarball named tutorial-0.0.tar.gz
(the source distribution of your application), as well ass tutorial-0.0-py3-none-any.whl
(the binary distribution).
You can send these files to your friends to show them your cool new application.
They should be able to install the app by pointing the pip install
command directly at one of them.
These artifacts are also uploadable to PyPI, or another package index, using a tool like twine
.
Note that the config files, such as production.ini
are not part of the distribution.
These files are considered to be defined by the "user" of your application and not part of the application itself.
If you'd like to help a user out, consider defining a new CLI script similar to initialize_tutorial_db
that can render a config file for them!
Please learn more about distributing an application from the Python Packaging User Guide.