Python Project Boilerplate
This repo provides a standardized template for modern Python projects based on the layout recommended by Kenneth Reitz.
- Editable install support
- Support for installing development dependencies through setup.py
- PyTest unit-test support
- An .editorconfig file
- Sphinx documentation generation
pyproject.tomlPEP 517/518 support
The project is ready to run as is. You will need Python 2.7 or later.
Create a Virtual Environment
After cloning or downloading the repo, create a Python virtual environment with:
python -m venv .virtualenv
for Python 3.x.
For Python 2.7, use the
This will create the virtual environment in the project directory as
.virtualenv. This is the convention I prefer as it keeps projects isolated from one another, but you can create your virtual environment whereever you like.
Activate the Virtual Environment
Now activate the virtual environment. on macOS, Linux and Unix systems, use:
On Windows with
Or Windows with PowerShell:
Install the Development Environment
pip install -e .[dev]
This will install the packages the project depends on in production as well as packages needed during development.
-eoption specifies that you wish to install the package in "editable" mode for development.
.[dev]argument directs pip to install the package that is defined by the
setup.pyfile the in the current directory and to additionally install the extra depdencies defined in the "dev" group. The additional dependencies include things lik ethe Sphinx documentation generator, pytest, pylint and other development packages that end-users of the package will not need.
Refer to the pip install documentation for more information on these options.
At this point, you are ready to start modifying to template for your own needs.
You can run unit tests through setup.py with:
python setup.py test
or just run pytest directly:
To generate Sphinx documentation, run:
python setup.py build_sphinx
The generated documentation will be available in
When you are ready to distribute your Python package, build a wheel with:
python setup.py bdist_wheel
Alternatively, you can add the
--universaloption to the
bdist_wheelcommand to build a "univeral" distribution that can be used with both Python 3.x and 2.7.x.
The wheel will be generated in th