1) Start with a clean environment
- Create a fresh virtual environment for the build.
- Install only what the app needs.
- Use a single Qt binding (avoid multiple Qt packages in one build).
2) Choose your output type
- onedir for faster startup and fewer runtime issues
- onefile for easiest distribution (slower first launch)
3) Bundle assets deliberately
- Use a spec file for icons/images/config.
- Test paths in a frozen build.
4) Verify on a clean machine
Always test on a second PC or a Windows VM to catch missing DLLs and path assumptions.
If you want a guided UI for this workflow, try PyInstaller GUI.