Ошибка импорта при попытке доступа к администратору хранилища данных SDK - PullRequest
1 голос
/ 30 января 2011

При попытке получить доступ к администратору хранилища данных на сервере разработки появляется «ImportError: Нет модуля с именем simplejson».

После первой ошибки я установил пакет simplejson из slackbuilds (янахожусь на Slackware).Кажется, он работает нормально, я мог импортировать модуль simplejson без ошибок на консоли Python.

Но ошибка импорта сохраняется, когда я пытаюсь получить доступ к администратору хранилища данных, даже после установки модуля.Перезапуск сервера разработки ничего не сделал.

Что может быть не так?

Редактировать: вот трассировка стека:

Traceback (последний вызов был последним):
Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 3245, в _HandleRequest self._Dispatch (файл диспетчера, self.rfile, outfile, env_dict) "/ home / lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ", строка 3186, в файле _Dispatch base_env_dict = env_dict)" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appser.py 5/1в файле Отправка base_env_dict = base_env_dict) "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 2410, в файле Отправка self._module_dict) "/ home / lwlun / AppEngine / google_appengine / tools / dev_appserver.py ", строка 2320, в ExecuteCGI reset_modules = exec_script (handler_path, cgi_path, hook) Файл" / home / lwlun / AppEngine / google_appengine / google / appengine / tools / dev_appserver.py ", строка 2216, в файле ExecuteOrImportScript exec module_code в файле script_module. dict Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/ext/datastore_admin/main.py ", строка 30, из google.appengine.ext.datastore_admin импортировать файл copy_handler "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1295, в функции возврата возврата функции (self, * args, ** kwargs)) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1945, в load_module возвращает self.FindAndLoadModule (файл подмодуля, полное имя, search_path) Файл / home / lwlun / AppEngine / googlegoogle / appengine / tools / dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ",строка 1847, в описании FindAndLoadModule) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1295, в функции Decorate return fun (self,* args, ** kwargs) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1798, в описании LoadModuleRestricted) Файл "/ home / lwlun / AppEngine / google_appengine / google / appengine/ext/datastore_admin/copy_handler.py ", строка 40, из google.appengine.ext.datastore_admin import utils Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ", строка 1295, вДекорировать возвращаемый func (self, * args, ** kwargs) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1945, в load_module вернуть self.FindAndLoadModule (подмодуль, полное имя, search_path) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1295, в файле Decorate return fun (self, * args, ** kwargs) Файл "/ home / lwlun / AppEngine / google_appengine/google/appengine/tools/dev_appserver.py ", строка 1847, в описании FindAndLoadModule) Файл" / home / lwlun / AppEngine / google_appengine / google / appengine / tools / dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ", строка 1798, в LoadModuleRestrictedописание) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/datastore_admin/utils.py", строка 35, из google.appengine.ext.mapreduce файла управления импортом импорта "/ home / lwlun / AppEngine / google_appengine/google/appengine/tools/dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ", строка 1945, в load_module возвращает файл self.FindAndLoadModule (submodule, fullname, search_path) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1295, в функции возврата возврата функции (self, *args, ** kwargs) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1847, в описании FindAndLoadModule) Файл "/ home / lwlun / AppEngine / google_appengine / google / appenginetools / dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ",строка 1798, в описании LoadModuleRestricted) Файл "/home/lwlun/AppEngine/google_appengine/google/appengine/ext/mapreduce/control.py", строка 26, из google.appengine.ext.mapreduce файла обработчиков импорта "/ home /lwlun / AppEngine / google_appengine / google / appengine / tools / dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" / home / lwlun / AppEngine / google_appengine / google / appengine / tools/dev_appserver.py ", строка 1945, в load_module возвращает self.FindAndLoadModule (подмодуль, полное имя, search_path) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py ", строка 1295, в декорироватьФайл func (self, * args, ** kwargs) "/home/lwlun/AppEngine/google_appengine/google/appengine/tools/dev_appserver.py", строка 1847, в файле FindAndLoadModule)) "/ home / lwlun / AppEngine / google_appengine/google/appengine/tools/dev_appserver.py ", строка 1295, в файле Decorate return func (self, * args, ** kwargs) Файл" / home / lwlun / AppEngine / google_appengine / google / appengine / tools / dev_appserver.py ", строка 1798, в описании LoadModuleRestricted) Файл" /home/lwlun/AppEngine/google_appengine/google/appengine/ext/mapreduce/handlers.py ", строка 26, в import simplejson ImportError: Нет модуляпо имени simplejson

Ответы [ 3 ]

2 голосов
/ 30 января 2011

Использование from django.utils import simplejson.

dev_appserver имитирует производственную среду.Ничто из того, что вы устанавливаете на системном уровне, не будет доступно для импорта в ваши скрипты, чтобы избежать импорта, работающего нормально при тестировании, а затем эффектного сбоя при развертывании.Однако вам не нужно связывать этот конкретный модуль, потому что он уже доступен в пакете django, установленном на производстве (и вместе с SDK).

Как правило, вам необходимо включить внешние библиотеки в каталог приложения., хотя вы можете использовать символьные ссылки из их установленных местоположений, и они, как правило, будут работать нормально (и будут развернуты в рабочей среде при развертывании).

0 голосов
/ 13 декабря 2014

Если это в lib SDK движка приложения, например, на Mac, то это

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/

Скопируйте его в каталог приложения. Это лучше, чем установить pip, а затем скопировать, который может содержать c-extension. Модули в пути lib SDK (по крайней мере, simplejson), видимо, были модифицированы для работы с требованиями ядра приложения.

0 голосов
/ 30 января 2011

Я нашел решение в похожем вопросе: ImportError при использовании Google App Engine

Копирование модуля в каталог приложения работало, но это похоже на дешевый обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...