I don't know what your challenges with PyInstaller are, but I think it does a good job. You may need to do a bit of workaround as detailed here https://realpython.com/pyinstaller-python/. However, two other packages that do similar things are py2exe and WinPython. There could be more!
Depending on your objectives, you may also consider using "Inno Setup" (http://www.jrsoftware.org/isinfo.php) to seamlessly package your executable for distribution.