Pyinstaller can be a bit fiddly to get right initially if you have a lot of package dependencies, but other than that it works really well.
I've had automated builds running mostly untouched for years here https://github.com/Numerlor/Auto_Neutron/blob/master/pyinsta..., though it doesn't have any particularly troublesome packages other than PySide6