app-engine-patch与pyamf = 没有名为encoding的模块

0 投票
1 回答
1565 浏览
提问于 2025-04-15 13:47

我正在尝试使用 app-engine-patch 和 pyamf,参考这个链接:http://pyamf.org/wiki/GoogleAppEngine,因为我想把我的 Django 和 pyamf 应用迁移到 app-engine-patch 和 pyamf。

现在我做的是创建了一个 gateway.py 文件,里面只有一行代码:

import pyamf

我只是想测试一下能否使用 pyamf,当我在浏览器中打开那个网址/文件时,看到的是空白页面,这看起来没问题(没有导入错误,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 的高手能给我点提示,看看我哪里做错了,怎么才能让 pyamf 和 app-engine-patch 一起工作呢?

1 个回答

1

你在应用引擎的启动代码中激活Django 1.0.2了吗?现在应用引擎自带这个版本,但为了兼容旧版,它也带了0.9.6,而默认使用的还是0.9.6。要解决这个问题,你只需要在启动时使用:

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

这样之后,“后续尝试导入django包时将会使用Django 1.0.2。”不过,你需要单独用SDK安装1.0.2。具体的安装说明可以在这里找到。

撰写回答