I started helping my users with using Python on Mac OS X. This post will be a work in progress. I will add to it when I learn more about using Python on Mac OS X. These commands should work on 10.11 or later.
The default method of installing modules is using the command easy_install. Note that this is done outside Python. easy_install is part of the setuptools which is installed by default on Mac OS 10.11 and later. You might need the Xcode and its command line tools. Use this link to download Xcode.
You can install a module by name. For example, this command install the abf module.
sudo easy_install abf
For a list of available packages, please check PyPI index page. You can also install a module by the module source file.
sudo easy_install https://pypi.python.org/packages/a2/d8/4afbd6ef3b36de04ba86f1df97de96d3b4b66d44cbef7de32bed38d2aedc/abalone-0.1.tar.bz2#md5=c6dc8d6d0d1825151d040f7ccba0a6da
For other use of the command, please check this page on python.org. If you get an error message that you cannot install a package because you do not have permission even though you run the command with sudo, that’s because Mac OS has restrictions on some system directories. You can try to use the –user option and install the module just for you. For example, this command installs the module abf under your home directory.
easy_install --user abf
Also, if you would like to use pip to install packages. You can use easy_install to install pip first, and then you can use pip for module installation.
sudo easy_install pip
Checking the architecture of files
This command is not directly related to Python, but it’s useful when you build a Python module. I got a message saying the module’s architecture is not the same as Python when I built a module. I was looking for a way to check the architecture of the files and I found this command called file. For example, to check the architecture of Python, use
Here is the output of this command.
/usr/bin/python: Mach-O universal binary with 2 architectures /usr/bin/python (for architecture i386): Mach-O executable i386 /usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
You can run the file command against the files in the module you built to find out if the architecture of your files matches that of Python.
file _spams_wrap.so _spams_wrap.so: Mach-O universal binary with 2 architectures _spams_wrap.so (for architecture i386): Mach-O bundle i386 _spams_wrap.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
In this example, _spams_wrap.so is the file name of an object file in the module I built.
Checking shared libraries
Again, this is a tool not directly related to Python but it’s useful. You can use otool with -L option to show the shared libraries that the object file uses.
otool -L _spams_wrap.so _spams_wrap.so: /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.10) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
I used this to make sure the correct shared libraries were used to build the object file.
Alternative ways of running Python
If you want to use a different version of Python, you can consider the following alternatives.