The macOS 10.15 SDK provides support for developing apps for Macs running macOS Catalina 10.15. The SDK comes bundled with Xcode 11 available from the Mac App Store. For information on the compatibility requirements for Xcode 11, see Xcode 11 Release Notes.
Posted on October 21, 2019 by Paul
Updated 11 February 2020
Python Anaconda Mac Catalina
In this article, I will show you how to install OpenCV 4 with Python 3 on macOS Catalina.
- 'The basic premise of all Python development is to never use the system Python. You do not want the Mac OS X 'default Python' to be 'python3.' You want to never care about default Python.' How do we stop caring about the default? Moshe recommends using pyenv to manage Python environments (for a deeper dive on configuring pyenv, see this article.
- At the very least, Catalina users should use the 'unified' build of the app provided on the download page, which uses the system's 64-bit python runtime. Also note that there are significant limitations on what files unsigned applications can access which makes it very difficult to open, save, find, and otherwise organize image and CSV files.
- As Apple has announced, Mac OS Catalina now runs under its own read only file system: macOS Catalina runs on a dedicated, read-only system volume called Macintosh HD. This volume is completely separate from all other data to help prevent the accidental overwriting of critical operating system files. 1 Sounds great.
There is also a video version of this tutorial:
MacOS comes by default with Python 2.7 which, at this point, receives only bug fixes and will be EOL by 2020. Python 3.x is the future and it is supported by all major Python libraries. In this tutorial, we’ll use the Python 3.8.
Start by installing the Command Line Tools for macOS. Please note, that you will need the Command Line Tools even if you’ve already installed Xcode. Open a Terminal and write:
Once the Command Line Tools are installed, we can install Python.
The official installer of Python is a pkg file that will start a GUI installer which will guide you through the installation. You can also check the video version of this tutorial if you want to see how I did it.
As a side note, you can have multiple Python 3 versions installed on your macOS machine. If this is the case, you can select which version you want to use by specifying the version number, e.g.:
or:
After the above, you can invoke Python 3.8 using the python3.8 command. python3 will also invoke the latest installer version of Python 3. This is what I see if I run python3.8 on my machine:
Python For Mac Catalina
Next, let’s follow best practices and create a new Python environment in which we can install NumPy and OpenCV:
At this point, your prompt should indicate that you are using the work environment. You can read more about Python environments in the documentation.
Once an environment is activated, all the install commands will apply only to the current environment. By default, if you close your Terminal, the environment is deactivated. If you want to be able to use it, use the source work/bin/activate command.
We can install NumPy and OpenCV with:
Please note that the above will install the slightly older OpenCV 4.1, latest binary version doesn’t seem to work on macOS Catalina!
As a side note, when you are in a new environment you can use python to invoke the Python interpreter, no need to use the version number.
At this point, you should have OpenCV 4 and Python installed on your Mac. We can write a small test program that will print the OpenCV version, load an image from the disk, convert the image to gray and show the result. Start by downloading the next image:
Save it as clouds.jpg. In the same folder where you’ve saved the above image, create a new file demo.py and write the next code:
Run the code with:
(You can close the two windows by pressing ESC!)
You should see something like in the next figure. By default, the last image (the gray one) will be over the first one. You need to move the window in order to see both images:
If you want to learn more about OpenCV and Python I would recommend reading OpenCV with Python Blueprints by M. Beyeler:
or, OpenCV with Python By Example by G. Garrido and P. Joshi: