2 votes

ImportError lors de l'exécution de l'appengine python de Google sur Ubuntu

J'essaie de m'enseigner le python en utilisant le programme de Google. AppEngine et je n'arrive pas à faire fonctionner le serveur de développement. J'obtiens cette erreur :

Traceback (dernier appel le plus récent) :
Fichier "/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py", ligne 60, dans exécuter_fichier( fichier , globals()) Fichier "/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py", ligne 57, dans run_file execfile(script_path, globals_) Fichier "/opt/google_appengine/google_appengine_1.2.7/google/appengine/tools/dev_appserver_main.py", ligne 65, dans from google.appengine.tools import os_compat ImportError : cannot import nom os_compat

Ubuntu 9.10 est livré avec python2.6 (ne fonctionne pas), et j'ai installé python2.5 (ne fonctionne pas), et j'ai essayé de l'exécuter avec python dev_appserver.py helloWorld (cela n'a pas fonctionné) ainsi que l'exécution de dev_appserver.py après avoir modifié la première ligne pour être :

#!/usr/bin/env python2.5

Je ne trouve rien en ligne concernant cette erreur. Le seul problème que j'ai trouvé concerne l'utilisation de python 2.5, et je pense l'avoir résolu.

Kyle a suggéré que je devais définir ma variable PYTHONPATH. Après avoir exécuté

export PYTHONPATH=/opt/google_appengine/google_appengine_1.2.7

J'obtiens toujours la même erreur en essayant d'exécuter dev_appserver.py. Ai-je mal défini PYTHONPATH ? Sinon, comment puis-je désinstaller le projet python Protocol Buffers ? Je n'ai aucune utilité pour Ubuntu One et l'ai déjà désinstallé.

3voto

Bmosorio342 Points 11

Le problème semble résider dans le fait que Karmic Koala 9.10 (la dernière version d'Ubuntu) est livré avec Ubuntu One, une application python qui dépend de l'application Google tampons de protocole bibliothèque. Le paquet python-protobuf fournit le paquet google.protobuf dans /usr/lib/pymodules/python2.6.

Malheureusement, le SDK AppEngine inclut un autre paquet appelé google.appengine. Donc, quelque part dans votre code, le paquetage google est importé, et le paquetage qui contient protobuf est trouvé en premier sur PYTHONPATH. Python met en cache le premier paquet qu'il trouve dans sys.modules, donc le second paquet google du SDK ne sera jamais importé.

Vous pouvez déplacer le SDK google AppEngine vers l'avant de votre PYTHONPATH. Cela devrait garantir que Python trouve le paquet google.appengine au lieu du paquet fourni par python-protobuf.

PYTHONPATH=/opt/google_appengine/google_appengine_1.2.7 \
    python dev_appserver.py helloWorld

Il s'agit d'un bogue qui doit être signalé à l'équipe de la Commission européenne. Projet AppEngine SDK .

Mise à jour : J'ai soumis un bogue contre l'API AppEngine .

1voto

Steve Armstrong Points 1819

C'était un problème de permission de fichier. os_compat.py n'était pas lisible par l'utilisateur, seulement par Root. Je ne sais pas si je me suis trompé, ou si les permissions par défaut ne permettent pas la lecture intégrale, mais c'était la solution.

Je déteste accepter ma propre réponse après que Kyle ait donné une si bonne réponse, mais je n'ai pas besoin du correctif $PYTHONPATH pour le faire fonctionner maintenant que je l'ai fait. sudo chown -R +r /opt/google_appengine/google_appengine_1.2.7

0voto

Joe Hughes Points 360

Avec cette erreur, Python dit qu'il ne peut pas trouver ou lire le nom qu'il essaie d'importer. Puisque l'importation de os_compat est la toute première ligne exécutable de l'AppEngine. dev_appserver.py Je pense qu'il y a un problème avec la façon dont vos chemins sont configurés.

0voto

mckoss Points 2630

La dernière version d'Ubuntu (10.10) a également supprimé Python 2.5, ce qui complique l'installation de l'environnement de développement App Engine.

J'ai (enfin) réussi à faire fonctionner mon environnement (notamment en utilisant App Engine Helper pour les tests unitaires). J'ai construit ce bash script qui pourrait être utile à d'autres. Il s'installe :

  1. sqlite
  2. libsqlite
  3. pep8
  4. simuler
  5. OpenSSL
  6. Python 2.5.2
  7. Bibliothèque SSL Python
  8. Django 1.1 (dernière version en production)
  9. Moteur d'application
  10. App Engine Helper

http://pageforest.googlecode.com/hg/tools/pfsetup

0voto

topless Points 2962

Ubuntu 11.04 est livré avec python 2.6 comme version par défaut. Il est suggéré d'utiliser Google app engine avec la version 2.5. Je l'utilise pourtant depuis de nombreuses années avec python 2.6 sans aucun problème.

Ce que vous devez faire pour l'exécuter sans problème avec python 2.6 est d'éditer google/appengine/tools/dev_appserver.py et ajoutez ces trois lignes

  '_counter',
  '_fastmath',
  'strxor',

après 'XOR', et avant '_Crypto_Cipher__AES', autour de la ligne ~1350.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X