Resolve issue "No Qt bindings could be found" on Git-cola (OSX)

I am using OSX and I wanted to install git-cola for manage my Git projects. Unfortunately, after installing python using brew, I could not run it. When typing git cola to terminal, I kept getting the following error message:

Traceback (most recent call last):
  File "/usr/local/bin/git-cola", line 53, in <module>
    from cola.main import main
  File "/usr/local/Cellar/git-cola/2.8/share/git-cola/lib/cola/main.py", line 9, in <module>
    from .app import add_common_arguments
  File "/usr/local/Cellar/git-cola/2.8/share/git-cola/lib/cola/app.py", line 32, in <module>
    from qtpy import QtCore
  File "/usr/local/Cellar/git-cola/2.8/share/git-cola/lib/qtpy/__init__.py", line 125, in <module>
    raise PythonQtError('No Qt bindings could be found')
qtpy.PythonQtError: No Qt bindings could be found

As you can see from the above code, the error occurred when I was trying to run the command git cola, which is actually a shortcut to the executable file /usr/local/bin/git-cola (you can see that from the first line of the error message). Realizing that this file was actually a Python file, I tried the following command to see if it would work or not:

python /usr/local/bin/git-cola

Strangely this command executed well without any issue, git-cola started and the window showed up. Hmm, I asked myself: why this command works?

First of all, you should understand that we can execute the following command directly without prefixing it with the python command in the terminal:

/usr/local/bin/git-cola

This file is executable thanks to the first line in its content, which is a directive for Unix system to know which "program" to run this file. This is called Shebang on Unix. It looks like this:

#!/usr/bin/sh

It means that this file will be run by the program /usr/bin/sh. So back to our /usr/local/bin/git-cola file, here is its original Shebang

#!/usr/bin/python

This is the default Python interpreter on Mac OSX. Because I know I have been writing a lot of Python code recently so perhaps I installed some other Python version on my computer. Hence I checked for the current default Python of my system

which python

And it showed:

/Users/chientran/anaconda/bin/python

Yeah, now I know the reason. The MacOSX's default Python interpreter is not compatible with git-cola, but my current python interpreter is okay. Why? I do not know exactly the reason. At that moment, I just wanted git-cola to work, so I simply changed the Shebang on /usr/local/bin/git-cola to like this:

#!/Users/chientran/anaconda/bin/python

And I ran git cola again on my terminal, the git cola window showed up beautifully.