Cookiecutter template for a Python package.
- GitHub repo: https://github.com/audreyr/cookiecutter-pypackage/
- Documentation: https://cookiecutter-pypackage.readthedocs.io/
- Free software: BSD license
- Testing setup with
pytest
- Travis-CI: Ready for Travis Continuous Integration testing
- Tox testing: Setup to easily test for different Python versions
- 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)
Linux:
Windows:
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:
cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git
Then:
Create a repo and put it there.
Add the repo to your Travis-CI account.
Install the dev requirements into a virtualenv. (
make requirements
)Run
pre-commit
to be sure there are no check failures or unneeded checks.:pre-commit install pre-commit run --all-files
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.
Update a
requirements/base.in
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 pyup.io.
For more details, see the cookiecutter-pypackage tutorial.
Don't worry, you have options:
- Nekroze/cookiecutter-pypackage: A fork of this with a PyTest test runner,
strict flake8 checking with Travis/Tox, and some docs and
setup.py
differences. - tony/cookiecutter-pypackage-pythonic: Fork with py2.7+3.3 optimizations.
Flask/Werkzeug-style test runner,
_compat
module and module/doc conventions. SeeREADME.rst
or the github comparison view for exhaustive list of additions and modifications. - ardydedase/cookiecutter-pypackage: A fork with separate requirements files rather than a requirements list in the
setup.py
file. - lgiordani/cookiecutter-pypackage: A fork of Cookiecutter that uses Punch instead of Bumpversion and with separate requirements files.
- Also see the network and family tree for this repo. (If you find anything that should be listed here, please add it and send a pull request!)
You can take our detailed course that covers all the features of this template, which has the added bonus of funding this project:
También disponible en español:
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.
I also accept pull requests on this, if they're small, atomic, and if they make my own packaging experience better.