Recs.
Updated
PyInstaller is a cross-platform tool for freezing Python scripts into executables. It can package Python scripts and dependencies into a single folder that the executable depends on, or embed them into a single stand-alone executable.
Specs
Pros
Pro Easy to use
PyInstaller is one of the best tools for easily freezing Python Scripts and Modules into self-contained executables. It can be used via CLI with a single command and without many configurations. This tool pulls all the necessary files and libraries needed into a file to have your program run on any PC as an executable app.
Pro Can obfuscate Python byte code
Python bytecode can be obfuscated by specifying an encryption key with a CLI command. This should prevent most forms of tampering with the executable, such as reverse-engineering it to extract the underlying Python code. While the bytecode is encrypted using AES256, it should not be confused for security because the key can be extracted from the executable.
Cons
Con Fails to produce .exe
Produces nothing in the \dist directory, no .exe file, nothing except a \setup directory. A waste of disk space. I have a simple single python .py file, marginally above "hello", no user input, a simple parse of known binary file to a known text file. Copious unintelligible output to no effect.
Recommendations
Comments
Flagged Pros + Cons
Con External executables need to be bundled with the package
If your python script/program depends on additional executables, say, for example phantomjs or chromedriver, you may have to put these in the same directory as your python script/program.