If you've already installed "pyinstaller" (with pip install pyinstaller) you can run following command:
sudo pyinstaller YourPythonScript.py -n YourPythonScriptName --clean --onefile
What happens: a Unix executable "YourPythonScriptName" will be created in the /dist directory.
It's just ONE FILE, no worries about security issues anymore.
Here is the complete article:
Mr. NetTek explains: how to deploy a Python script with pyinstaller on a mac
NOTE: THIS ARTICLE IS WRITTEN BY MrNetTek, click on the link above to see the original text.
Mac – pyinstaller – Create .APP FilePosted onMarch 15, 2019AuthorMrNetTek
PyInstaller reads a Python script written by you. It analyzes your code to discover every other module and library your script needs in order to execute. Then it collects copies of all those files – including the active Python interpreter! – and puts them with your script in a single folder, or optionally in a single executable file, and an APP.
pip3 install pyinstaller
1sudo pyinstaller Notify.py -n Notify --windowed --noconfirm --clean
Other packages/dependencies you may need before compiling:
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
brew install python3
brew link python
brew postinstall python
pip3 install -U py2app
pip3 install Pillow
brew install tcl-tk
pip3 install virtualenv
brew install pyside
pip3 install sip
brew install cartr/qt4/pyqt@4
brew install PyQt5
brew install opencv@2
brew install git
pip3 install opencv-python
pip install python-resize-image
If you specify only --onefile under Mac OS X, the output in dist is a UNIX executable myscript. It can be executed from a Terminal command line. Standard input and output work as normal through the Terminal window.
If you also specify --windowed, the dist folder contains two outputs: the UNIX executable myscript and also an OS X application named myscript.app.
As you probably know, an application is a special type of folder. The one built by PyInstaller contains a folder always named Contents. It contains:
PyInstaller builds minimal versions of these elements.
Use the icon= argument to specify a custom icon for the application. (If you do not specify an icon file, PyInstaller supplies a file icon-windowed.icns with the PyInstaller logo.)