Réparation environnement Python après un brew cleanup

J’ai récemment exécuté un brew cleanup pour nettoyer toutes les anciennes versions des paquets non utilisés. Depuis virtualenv ne fonctionne plus… voilà comment j’ai pu m’en sortir.

Arrrghhhh

Après activation d’un environnement :

. ~/virtualenvs/pelican/bin/activate

En lançant par exemple la génération de mon blog avec Pelican :

dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /Users/jcgay/virtualenvs/pelican/bin/python
  Reason: image not found

Mais pourquoi tout est cassé ?

Quand on crée un environnement avec virtualenv celui-ci crée des liens vers votre installation de Python. Par exemple à la racine d’un environnement isolé on a :

.Python -> /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Python

En effectuant un brew cleanup les anciennes versions de Python sont supprimées. Les environnements utilisant ces versions deviennent inopérants.

Réparation de l’environnement

On installe un find GNU :

brew install findutils

On supprime tous les liens symboliques erronés :

gfind ~/virtualenvs/pelican/ -type l -xtype l -delete

On recrée l’environnement :

virtualenv ~/virtualenvs/pelican

Et là nouvelle erreur…

zsh: /usr/local/bin/virtualenv: bad interpreter: /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Ver: no such file or directory

On réinstalle virtualenv :

pip uninstall virtualenv
pip install virtualenv

On recrée l’environnement :

virtualenv ~/virtualenvs/pelican

Et voilà tout fonctionne à nouveau !

Sources

How to fix your virtualenv after an upgrade of Python with Homebrew
Broken references in Virtualenvs
Trouble using mkvirtualenv after installing OS X Mavericks

comments powered by Disqus