Skip to content
Cookiecutter template for a Python package.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add GitHub issue template Jun 4, 2016
docs Resolving requirements issues: adding click #347, update pytest to 3.… Feb 20, 2018
hooks First pass at removing Feb 18, 2018
tests Remove trailing whitespace and shorten docstring Sep 7, 2018
{{cookiecutter.project_slug}} Update requirements_dev.txt Oct 14, 2018
.editorconfig Keep trailing whitespace in diff files Jun 8, 2017
.gitignore Add .pytest_cache Apr 4, 2018
.travis.yml First pass at removing per #410 Feb 18, 2018
CONTRIBUTING.rst Add Python 3.6 support Jan 7, 2018
Makefile simply usage and add help Jun 9, 2016
README.rst Update links for Python package courses Sep 7, 2018
appveyor.yml Add Python 3.6 support Jan 7, 2018
cookiecutter.json Remove the email spam generator Mar 10, 2018
pytest.ini add pytest.init to make tests easier to run Jun 2, 2016
requirements_dev.txt Update pytest from 3.4.0 to 3.4.2 Mar 6, 2018
setup.cfg Release 0.1.1 Jun 4, 2016 Add Python 3.6 support Jan 7, 2018
tox.ini Fix tox venv typo Sep 17, 2018


Cookiecutter PyPackage


Cookiecutter template for a Python package.


  • Testing setup with unittest and python test or py.test
  • Travis-CI: Ready for Travis Continuous Integration testing
  • Tox testing: Setup to easily test for Python 2.7, 3.4, 3.5, 3.6
  • Sphinx docs: Documentation ready for generation with, for example, ReadTheDocs
  • Bumpversion: Pre-configured version bumping with a single command
  • Auto-release to PyPI when you push a new tag to master (optional)
  • Command line interface using Click (optional)

Build Status


Linux build status on Travis CI


Windows build status on Appveyor


Install the latest Cookiecutter if you haven't installed it yet (this requires Cookiecutter 1.4.0 or higher):

pip install -U cookiecutter

Generate a Python package project:



  • Create a repo and put it there.
  • Add the repo to your Travis-CI account.
  • Install the dev requirements into a virtualenv. (pip install -r requirements_dev.txt)
  • Register your project with PyPI.
  • Run the Travis CLI command travis encrypt --add deploy.password to encrypt your PyPI password in Travis config and activate automated deployment on PyPI when you push a new tag to master branch.
  • Add the repo to your ReadTheDocs account + turn on the ReadTheDocs service hook.
  • Release your package by pushing a new tag to master.
  • Add a requirements.txt file that specifies the packages you will need for your project and their versions. For more info see the pip docs for requirements files.
  • Activate your project on

For more details, see the cookiecutter-pypackage tutorial.

Not Exactly What You Want?

Don't worry, you have options:

Similar Cookiecutter Templates

Support this Project

You can take our detailed course that covers all the features of this template, which has the added bonus of funding this project:

Creating and Distributing Python Packages

También disponible en español:

Creating and Distributing Python Packages ES

Fork This / Create Your Own

If you have differences in your preferred setup, I encourage you to fork this to create your own version. Or create your own; it doesn't strictly have to be a fork.

  • Once you have your own version working, add it to the Similar Cookiecutter Templates list above with a brief description.
  • It's up to you whether or not to rename your fork/own version. Do whatever you think sounds good.

Or Submit a Pull Request

I also accept pull requests on this, if they're small, atomic, and if they make my own packaging experience better.

You can’t perform that action at this time.