ImportError: Aucun module nommé _sqlite3
-
27-09-2019 - |
Question
Je vous écris pour le Google App Engine et mes tests locaux obtiennent l'erreur suivante:
--> --> -->
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3185, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3128, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 515, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2387, in Dispatch
self._module_dict)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2297, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2193, in ExecuteOrImportScript
exec module_code in script_module.__dict__
File "C:\Users\Chris Reade\Documents\SI 182\Final\geneticsalesman\Final.py", line 7, in <module>
from pyevolve import DBAdapters
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1922, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1824, in FindAndLoadModule
description)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1775, in LoadModuleRestricted
description)
File "C:\Users\Chris Reade\Documents\SI 182\Final\geneticsalesman\pyevolve\DBAdapters.py", line 21, in <module>
import sqlite3
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1922, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1824, in FindAndLoadModule
description)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1775, in LoadModuleRestricted
description)
File "C:\Python26\lib\sqlite3\__init__.py", line 24, in <module>
from dbapi2 import *
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1922, in load_module
return self.FindAndLoadModule(submodule, fullname, search_path)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1824, in FindAndLoadModule
description)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1272, in Decorate
return func(self, *args, **kwargs)
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1775, in LoadModuleRestricted
description)
File "C:\Python26\lib\sqlite3\dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3
Ma direction python a un fichier lib pour sqlite3 mais je ne peux pas dire pourquoi il ne peut pas le trouver. Toute aide serait grandement appréciée.
La solution
L'App Engine SDK tente dur pour vous donner des erreurs sur les importations de module qui échoueraient sur la réel App Engine (sur les serveurs de Google). SQLite est pas pris en charge sur ce dernier, vous donnant des erreurs est juste bonne façon de le SDK de dire « vous ne serez pas en mesure de déployer ce code sur les serveurs réels Google App Engine »!
Autres conseils
App Engine tente de soulever une erreur lorsque l'on voulait utiliser sqlite3 pour la première fois. Cela se produit pas parce que App Engine (local) ne permet pas l'utilisation de sqlite3 comme une autre base de données, c'est parce que le sqlite3 est pas pris en charge à niveau de production . Alors App Engine fait son basé pour vous dissuader d'utiliser sqlite3 afin que vous ne confondront pas déployer l'application avec sqlite3.
Donc, pour utiliser sqlite3 dans votre App Engine locale, vous devez à la liste blanche du sqlite3 comme suit:
allez à C: \ Program Files (x86) \ Google \ google_appengine \ Google \ AppEngine \ tools \ devappserver2 \ python \ Runtime \ sandbox.py
Ouvrez le fichier et vous trouverez une variable constante _WHITE_LIST_C_MODULES déclarée comme:
_WHITE_LIST_C_MODULES = [
'array',
'_ast',
'binascii',
'_bisect',
.
.
.,
]
Ensuite, ajouter sqlite3 comme suit:
_WHITE_LIST_C_MODULES = [
'array',
'_ast',
'binascii',
'_bisect',
.
.
.,
_sqlite3,
]
J'espère que cela fonctionnera pour vous.