> For the complete documentation index, see [llms.txt](https://brain.nathanarthur.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brain.nathanarthur.com/programming-languages/python/package-management-and-distribution.md).

# Package Management & Distribution

[Building and Distributing Packages with Setuptools](https://setuptools.readthedocs.io/en/latest/setuptools.html) #article - "`Setuptools` is a collection of enhancements to the Python `distutils` that allow developers to more easily build and distribute Python packages, especially ones that have dependencies on other packages."

[Flit](https://flit.readthedocs.io/en/latest/) #software - "**Flit** is a simple way to put Python packages and modules on PyPI."

[How to Publish an Open-Source Python Package to PyPI](https://realpython.com/pypi-publish-python-package/) #article - "In this tutorial, you’ll cover how to **upload your own package to PyPI**. While getting your project published is easier than it used to be, there are still a few steps involved." 👍

[pip](https://pip.pypa.io/en/stable/) #software - "pip is the [package installer](https://packaging.python.org/en/latest/current/) for Python. You can use pip to install packages from the [Python Package Index](https://pypi.org/) and other indexes." [PyPA recommended](https://packaging.python.org/guides/tool-recommendations/).

[Pipenv](https://docs.pipenv.org/en/latest/#pipenv-python-dev-workflow-for-humans) #software - "**Pipenv** is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. *...* It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your `Pipfile` as you install/uninstall packages. It also generates the ever-important `Pipfile.lock`, which is used to produce deterministic builds." [PyPA recommended](https://packaging.python.org/guides/tool-recommendations/).

[pipx](https://pipxproject.github.io/pipx/) #software - "Execute binaries from Python packages in isolated environments. ❡ `pipx` is a tool to install and run any of the thousands of Python applications available on PyPI in a safe, convenient, and reliable way. Not all Python packages have entry points, but many do."

[Python Packaging Authority](https://www.pypa.io/en/latest/) - "The Python Packaging Authority (PyPA) is a working group that maintains many of the relevant projects in Python packaging."

[Tool recommendations](https://packaging.python.org/guides/tool-recommendations/) #article - Python Packaging Authority recommendations. "If you’re familiar with Python packaging and installation, and just want to know what tools are currently recommended, then here it is."

[Twine](https://github.com/pypa/twine) - "Twine is [a utility](https://pypi.org/project/twine/) for [publishing](https://packaging.python.org/tutorials/distributing-packages/) Python packages on [PyPI](https://pypi.org/). It provides build system independent uploads of source and binary [distribution artifacts](https://github.com/pypa/twine/blob/master/distributions) for both new and existing [projects](https://packaging.python.org/glossary/#term-project)." [PyPA recommended](https://packaging.python.org/guides/tool-recommendations/).

[wheel](https://wheel.readthedocs.io/en/latest/) - "This library is the reference implementation of the Python wheel packaging standard, as defined in [PEP 427](https://www.python.org/dev/peps/pep-0427/)." [PyPA recommended](https://packaging.python.org/guides/tool-recommendations/).
