if you want completelly create one stand alone executable, you can try PyInstaller . i feel it’s better to create one stand alone executable than cx_freeze or py2exe (in my experience). and easy to use (full documentation available in the site).
It supports Python 3.6 or newer.
Pass the --onefile argument if you want to create completely standalone .exe. in example :
pyinstaller.exe --onefile --windowed app.py