A single executable is always just one "pyinstaller --onefile --noconsole main.py" away.
[1] https://pyinstaller.org/en/stable/usage.html