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