📦 A Human's Ultimate Guide to setup.py.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1f744ec Sep 17, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
mypackage [Fixes #30] Add a VERSION tuple for comparison Nov 2, 2017
.gitignore Add Python .gitignore file. Nov 18, 2017
LICENSE change to MIT Sep 4, 2017
MANIFEST.in Update MANIFEST.in May 4, 2018
README.md Update README.md Sep 17, 2018
setup.py Merge pull request #47 from devxpy/patch-1 Jul 3, 2018


📦 setup.py (for humans)

This repo exists to provide an example setup.py file, that can be used to bootstrap your next Python project. It includes some advanced patterns and best practices for setup.py, as well as some commented–out nice–to–haves.

For example, this setup.py provides a $ python setup.py upload command, which creates a universal wheel (and sdist) and uploads your package to PyPi using Twine, without the need for an annoying setup.cfg file. It also creates/uploads a new git tag, automatically.

In short, setup.py files can be daunting to approach, when first starting out — even Guido has been heard saying, "everyone cargo cults thems". It's true — so, I want this repo to be the best place to copy–paste from :)

If you're interested in financially supporting Kenneth Reitz open source, consider visiting this link. Your support helps tremendously with sustainability of motivation, as Open Source is no longer part of my day job.

Check out the example!


To Do

  • Tests via $ setup.py test (if it's concise).

Pull requests are encouraged!

More Resources


This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.