
Google AppEngine propose est un service de développement web assez puissant et très intéressant qui permet de faire une application "scalable" en Java, Python et maintenant en Go. Le souci, si comme moi vous avez "MyPaint" et par conséquent le paquet protobuf-python... vous allez vous taper une erreur monstrueuse au démarrage de votre application... on va trouver une méthode simple pour contourner ce souci
Car effectivement, au premier lancement de votre application:
./google_appengine/dev_appserver.py helloworld/ Traceback (most recent call last): File "./google_appengine/dev_appserver.py", line 125, in <module> run_file(__file__, globals()) File "./google_appengine/dev_appserver.py", line 121, in run_file execfile(script_path, globals_) File "/home/patachou/Dev/google_appengine/google/appengine/tools/dev_appserver_main.py", line 138, in <module> from google.appengine.tools import os_compat ImportError: No module named appengine.tools
Pourquoi ? tout simplement parce que le paquet protobuf contient un module nommé... google ! du coup, python ne va pas voir ailleurs que dans le site-package protobuf et plante misérablement, lachant son dernier souffle en vous insultant... et vous, vous n'avez que pour seule solution de vous rabattre tant bien que mal sur des discussions sur le net où tout le monde vous demande de supprimer protobuf.
Sauf que moi, j'utilise MyPaint et j'ai pas envie de me remettre le paquet à chaque fois que je veux dessiner. Et puis de toutes manières j'aime pas les méthodes où il faut supprimer un paquet tout simplement parce qu'une implémentation sent la fosse septique...
La solution ? oui oui deux secondes...
Elle est simple ma solution... utiliser un environnement virtuel ! Attention, pas un LXC ou une VM qui va vous plomber tout votre espace disque... non ! juste un outil python qui rend tellement service, et dont je me sers tout le temps pour tester mes "setup.py" et autres joyeusetés qui peut simplement foutre le boxon dans mes répertoires.
Bref, on va faire ça propre !
On crée un environnement virtuel
mkdir -p ~/Dev/appengine virtualenv ~/Dev/appengine
Voilà, c'est fait... on copie maintenant le répertoire "google" fournis avec le SDK Python de Google App Engine:
cp -ra ~chemin/vers/google_appengine/google ~/Dev/appengine/lib/python2.7/site-packages/
Et pour lancer l'engin google, on active l'environnement:
source ~/Dev/appengine/bin/activate
Du coup, on voit notre prompt terminal commencer par: (appengine), chez moi ça donne:
(appengine)[patachou@patrice-laptop ~]$
Vous pouvez maintenant lancer votre programme (prenez le tutorial python 2.7 de google) de cette manières:
~chemin/vers/google_appengine/dev_appserver.py helloworld/
Pour sortir de l'environnement virutel:
deactivate
Voilà, c'est simple, assez propre, et en plus ça marche...