Awesome
Cookiecutter PyPackage
Cookiecutter template for a Python package.
- GitHub repo: https://github.com/giswqs/pypackage
- Documentation: https://giswqs.github.io/pypackage
- Free software: BSD license
Features
- Testing setup with
unittest
andpython setup.py test
orpytest
- GitHub actions: Ready for GitHub Continuous Integration testing
- bump2version: 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)
Quickstart
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 gh:giswqs/pypackage
Then:
- Create a repo and put it there.
- Go to GitHub Settings - Workflow permissions and enable Read and write permissions for GitHub Actions.
- Install the dev requirements into a virtualenv. (
pip install -r requirements_dev.txt
) - Register your project with PyPI.
- 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.
Video Tutorials
1. Creating a Python package with Cookiecutter Template
2. Publishing Python packages on PyPI
3. Deploying Python packages to PyPI using GitHub Actions
4. Introduction to Python package file structure
Not Exactly What You Want?
Don't worry, you have options:
Similar Cookiecutter Templates
- audreyfeldroy/cookiecutter-pypackage: Cookiecutter template for a Python package.
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.