Properly initialize Python projects
Setupinit is a command line tool that turns an empty directory into a Python project. This tool also ensures that an existing Python project is properly initialized. When you run setupinit init
from the command line, the current working directory is populated with files and folders following the conventional Python project structure as described in the Python Packaging User Guide.
Setupinit derives the project name from the current working directory, then computes the package name from it. The package name is different from the project name. For example, the package name of the cyberpunk-theme
project is cyberpunk_theme
. The package name is then used to initialize the contents of certain files such as setup.cfg
.
No existing file will be removed or modified by Setupinit. If, for example, you accidentally corrupted the contents of setup.cfg
, you can simply manually delete it, then run setupinit init
from the command line to create a brand new setup.cfg
.
Initialize an empty Python project:
$ cd /path/to/project
$ setupinit init
Successfully initialized !
Check if a project is initialized:
$ cd /path/to/demo
$ setupinit check
This project is already initialized !
Setupinit exposes an API (the same used by the CLI) with which you can interact programmatically in Python.
import setupinit
PROJECT_DIR = "/path/to/project"
project_name = setupinit.get_project_name(PROJECT_DIR)
if setupinit.is_initialized(PROJECT_DIR):
msg = "{} is already initialized.".format(project_name)
print(msg)
else:
setupinit.initialize(PROJECT_DIR)
msg = "{} is initialized !".format(project_name)
print(msg)
Read the modules documentation.
This is the contents of a newly created Python project with Setupinit:
demo/ # the demo project ($PROJECT_DIR) [1]
src
demo/ # this is the package directory ($PKG_DIR) [2]
__init__.py
__main__.py # the main entry point
tests/
__init__.py
__main__.py
MANIFEST.in # already filled with convenient lines of rules
pyproject.toml # the new unified Python project settings file [3]
README.md
setup.cfg # you MUST edit this file [4]
setup.py # don't remove nor edit this file [5]
VERSION # unique location to define the version number [6]
.gitignore
[1]
This is the project directory ($PROJECT_DIR).[2]
Your codebase lives in the package directory ($PKG_DIR).[3]
Read What the heck is pyproject.toml ? and the PEP 518.[4]
Read this user guide to edit thesetup.cfg
file.[5]
If you want editable installs you still need asetup.py
shim.[6]
You won't need to edit this file if you use Buildver to build Python packages.
Feel free to open an issue to report a bug, suggest some changes, show some useful code snippets, or discuss anything related to this project. You can also directly email me.
Following are instructions to setup your development environment
# create and activate a virtual environment
python -m venv venv
source venv/bin/activate
# clone the project then change into its directory
git clone https://github.com/pyrustic/setupinit.git
cd setupinit
# install the package locally (editable mode)
pip install -e .
# run tests
python -m tests
# deactivate the virtual environment
deactivate
Setupinit is cross-platform. It is built on Ubuntu and should work on Python 3.8 or newer.
python -m venv venv
source venv/bin/activate
pip install setupinit
pip install setupinit --upgrade --upgrade-strategy eager
deactivate
Hello world, I'm Alex, a tech enthusiast ! Feel free to get in touch with me !