Python pyamf=没有名为encoding的模块的应用程序引擎修补程序

Python pyamf=没有名为encoding的模块的应用程序引擎修补程序,python,google-app-engine,pyamf,app-engine-patch,Python,Google App Engine,Pyamf,App Engine Patch,我试图通过以下方式将应用程序引擎补丁与pyamf一起使用:因为我想将我的Django pyamf应用程序迁移到应用程序引擎补丁pyamf 现在,我只使用一行代码创建了gateway.py: import pyamf 为了测试我是否可以使用pyamf,当我将浏览器指向该url/文件时,我会看到一个空白页,这样看起来很好(没有导入问题,并且找到pyamf),但在我使用“manage.py runserver”启动服务器的命令提示符中,我看到了一系列错误,如: ... File "C:\Prog

我试图通过以下方式将应用程序引擎补丁与pyamf一起使用:因为我想将我的Django pyamf应用程序迁移到应用程序引擎补丁pyamf

现在,我只使用一行代码创建了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
。。。
文件“C:\Program Files(x86)\Google\Google\U appengine\Google\appengine\tools\dev\U appserver.py”,第2238行,在调度中
自我保护(模块)
ExecuteCGI中的文件“C:\Program Files(x86)\Google\Google\U appengine\Google\appengine\tools\dev\u appserver.py”,第2156行
重置模块=执行脚本(处理程序路径、cgi路径、钩子)
文件“C:\Program Files(x86)\Google\Google\U appengine\Google\appengine\tools\dev\U appserver.py”,第2052行,在ExecuteOrImportScript中
脚本模块中的exec模块代码__
文件“C:\Users\[my app engine修补程序应用程序路径]\common\appenginepatch\main.py”,第16行,在
patch_all()
文件“C:\Users\[my app engine修补程序应用程序路径]\common\appenginepatch\appenginepatcher\patch.py”,第29行,在patch\u all中
修补程序应用程序引擎()
文件“C:\Users\[my app engine修补程序应用程序路径]\common\appenginepatch\appenginepatcher\patch.py”,第193行,位于修补程序应用程序引擎中
从django.utils.encoding导入强制\u unicode,智能\u str
ImportError:没有名为encoding的模块

有没有pyamf应用引擎补丁大师可以给我一个提示,我做错了什么,我如何设置pyamf来使用应用引擎补丁?

你是否在应用引擎启动代码中激活了Django 1.0.2?AppEngine现在随附了它,但是(为了向后兼容)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。请参阅所有说明。

我不使用App engine Django,我使用的是同一软件包中zipped Django附带的App engine补丁。在启用pyamf之前,默认应用程序和我的模型都可以工作。一旦我导入pyamf,就会出现错误“No module named encoding”,因此pyamf似乎必须对sys.path或导入的其他方面进行一些操作,这些操作会使应用程序引擎修补程序在这一问题上的技巧相形见绌。如果在启动pyamf之前确保正确定义了
sys.modules['django.utils.encoding']
(例如,仅从django.utils导入编码,在启动pyamf之前它仍在代码中工作),会发生什么情况?pyamf不太可能从sys.modules中删除条目,所以这可能是一个值得尝试的解决方法!你是一个聪明人Alex:-)来自django.utils在pyamf调用之前导入编码。谢谢你的帮助!!不客气!我不确定pyamf到底在玩什么导入把戏,但几乎没有任何代码会费心删除sys.modules中已经存在的条目,这就是为什么我真的希望这个把戏能够解决问题;-)。