This weekend I’ve been toying with an old project I created in Django a while (~2 years) ago. The project uses virtualenv
, as commonly happens in this kind of projects. The original project was created originally on a different machine, and migrated to the current one. Original machine had OS X Lion, I think… or Snow Leopard, not sure. The point is, the project had been migrated thought 4 or 5 major OS X versions… and Python was a different version from the original one used to create the original virtualenv
.
So, back to the problem, trying to use Anaconda for Sublime Text, I found that the Python interpreter I was specifying in the configuration was not working. After some Googling, I found a link (I’m not able to find it again…) on how to troubleshot the configuration, which at the end it boiled down to execute the Python interpreter inside your virtualenv
with the following command:
~/Virtualenvs/myvirtualenv/bin/python -c pass
In my case, the result was the folling:
dyld: Library not loaded: @executable_path/../.Python
Referenced from: ~/Virtualenvs/myvirtualenv/bin/python
Reason: image not found
[1] 74178 trace trap ~/Virtualenvs/myvirtualenv/bin/python -c pass
After some Googling about this problem, I found the following post: “dyld: Library not loaded: @executable_path/../.Python” Basically: “dump the packages configuration, recreate the virtualenv, restore packages, and move everything there”. In my case, the “move everything there” was a bit tricky, and the “restore packages” was even worst, as it was using some unsupported packages which was impossible to install (no pip support, and manually install was quite time consuming…). So, I tried to do something in between, and finally I found the real difference, and the reason the interpreter was failing (notice different python version):
$ ls -la old-virtualenv
...
lrwxr-xr-x 1 myuser staff 78 29 nov 2014 .Python -> /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/Python
...
$ ls -la new-virtualenv
...
lrwxr-xr-x 1 myuser staff 80 5 mai 22:42 .Python -> /usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/Python
...
So, the real fix in my case was:
$ cd old-virtualenv
$ rm .Python
$ ln -s /usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/Python .Python