Makefile
The provided Makefile has several targets that assist with general project development. Using the Makefile means that you do not have to activate the venv unless you need to interact with it directly. The Makefile uses specially constructed targets to automatically build the venv and execute using the venv's python installation.
General targets:
make runrun your projectmake debugrun your project in debug modemake bundlebuilds a single-folder bundle using PyInstallermake run_bundlerun the single-folder bundle's executablemake zipcompress the bundle into a zip filemake installerwrap the bundle into a Windows installer using Inno Setupmake cleandelete the project's build artifacts
The Makefile also seamlessly manages your python virtual environment using the following targets:
make venvcreate the venv, if it doesn't existmake pippasses it's args to the venv's pipmake clean_venvdeletes the venvmake reset_venvdeletes the venv and then rebuilds it
Virtual Environment Management
TODO: a brief intro to Makefiles, and then an explanation of how this Makefile manages the venv