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.
Install
Compile
sudo pyinstaller Notify.py -n Notify --windowed --noconfirm --clean
Other packages/dependencies you may need before compiling:
xcode-select –install
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
Options
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:
- A folder
Frameworks
which is empty.- A folder
MacOS
that contains a copy of the samemyscript
UNIX executable.- A folder
Resources
that contains an icon file.- A file
Info.plist
that describes the app.
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.)
Notes
https://pyinstaller.readthedocs.io/en/v3.3.1/operating-mode.html