Skip to content

jnns/awesome-python-packaging

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

Awesome Python Packaging Awesome

Python packaging recently got awesome!

pyproject.toml is the standard place to configure everything, defined in PEP 518. Because lack of pyproject.toml support in some tools is the only part about Python packaging that isn’t awesome already, each tool has a little ✅ or ❌ to indicate support.

Testing / Checking

Make sure your program behaves as you intended in different environments.

Code Style

Make sure feedback in PRs isn’t mostly about code style, but about actual content.

Package Creation Tools

Manage your package’s dependencies, and publish it to the PyPI. With poetry and flit, there’s two easy to use command line applications. No pip, twine, and ./setup.py juggling!

  • poetry ✅ (pyproject.toml)

    A tool for application and library development that manages dependencies. Keeps an unchanging project environment via lockfile and other than pip has an actual dependency solver.

  • flit ✅ (pyproject.toml, flit.ini)

    A tool for simple packages without compilation step. Use e.g. get_version if you think your git tags are good as a source of versioning.

  • twine

    If you’re still stuck in setup.py world, this might soothe your pain. It allows you to upload a wheel to PyPI with little hassle. It has no configuration.

  • setuptools_scm ✅ (pyproject.toml, setup.cfg)

    A package that allows you to have one true source of versions: Your SCM metadata (e.g. git tag). Installing a “dirty” untagged version will automatically give you a version string that comparse as newer than the last clean one. It can work at build time as a command line tool/Python API or as a runtime library.

Package managers

These don’t need to be configured per project with pyproject.toml, but need to read its [build-system] section to install the project!

  • pip ✅ (pyproject.toml, setup.py)

    Python’s classic package manager. Widespread like no other and therefore very robust. Except for actually resolving dependencies, which it does rather duct-tape-and-hope like.

  • poetry (and to a small degree flit) is a package manager itself.

  • pipenv ❌ (Pipfile)

    pipenv is not a package creation tool, it’s an application creation tool. If you want to build a library, choose poetry or flit.

Others

About

An awesome list for python package development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published