2009-08-22 2 views
0

Я пытаюсь использовать app-engine-patch с pyamf, следуя этому: http://pyamf.org/wiki/GoogleAppEngine, потому что я хочу перенести приложение Django < -> pyamf в app-engine- патч < -> pyamf.app-engine-patch с pyamf = Нет модуля с именем encoding

То, что я сейчас, что я создал свой gateway.py только одна строка кода:

import pyamf 

просто проверить, может ли я использовать pyamf и я получаю пустую страницу, когда я указываю мой браузер к этому URL/файл, так что не выглядит хорошо (никаких проблем импорта и pyamf найден), но в командной строке, где я начал сервер с «manage.py runserver» Я вижу кучу ошибок, как:

... 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2238, in Dispatch 
    self._module_dict) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2156, in ExecuteCGI 
    reset_modules = exec_script(handler_path, cgi_path, hook) 
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2052, in ExecuteOrImportScript 
    exec module_code in script_module.__dict__ 
    File "C:\Users\[my app-engine-patch application path]\common\appenginepatch\main.py", line 16, in <module> 
    patch_all() 
    File "C:\Users\[my app-engine-patch application path]\common\appenginepatch\appenginepatcher\patch.py", line 29, in patch_all 
    patch_app_engine() 
    File "C:\Users\[my app-engine-patch application path]\common\appenginepatch\appenginepatcher\patch.py", line 193, in patch_app_engine 
    from django.utils.encoding import force_unicode, smart_str 
ImportError: No module named encoding 

есть ли pyamf < -> гуру app-engine-patch, который может дать мне подсказку, что я делаю wr ong и как я могу настроить pyamf для работы с app-engine-patch?

ответ

1

Вы активируете Django 1.0.2 в своем стартовом коде движка приложения? App Engine теперь поставляется с ним, но также (для обратной совместимости) с 0.9.6 и (по-прежнему для обратной совместимости). 0.9.6 - это то, что по умолчанию - все, что требуется, чтобы исправить это, при запуске используйте:

from google.appengine.dist import use_library 
use_library('django', '1.0') 

, а затем «Последующие попытки импортировать пакет django будут использовать Django 1.0.2.». Вам необходимо установить 1.0.2 с SDK отдельно. Просмотреть все инструкции here.

+0

Я не использую App Engine Django, я использую app-engine-patch, который поставляется с заархивированным Django в том же пакете. Приложение по умолчанию и мои модели работают * до * Я включаю pyamf. Как только я импортирую pyamf, я получаю ошибки «Без модуля с кодировкой» –

+0

Итак, похоже, что pyamf должен делать некоторые трюки с sys.path или другими аспектами импорта, которые сводят на нет собственные трюки приложения app-engine-patch. Что произойдет, если вы убедитесь, что 'sys.modules ['django.utils.encoding']' правильно определено до начала pyamf (например, просто «из django.utils импортировать кодировку» в ваш код, где он все еще работает до того, как вы начнете pyamf) ? Маловероятно, но не исключено, что pyamf удалит записи из sys.modules, так что это может быть обходным решением, которое стоит попробовать! –

+0

Вы мудрый человек Alex :-) от django.utils импортировать кодировку перед вызовами pyamf работает как шарм. Спасибо за помощь !! –