Python 2.6 + PIL + Google App Engine问题

时间:2010-05-21 19:38:52

标签: python image google-app-engine

我正在使用OS X 1.6雪豹,我成功安装了PIL。我可以打开终端并输入导入图像,没有任何错误。

然而,当使用app引擎时,我得到Image错误仍然说没有安装PIL。我想知道你们是否有任何想法如何解决这个问题。

马修

5 个答案:

答案 0 :(得分:3)

显然,Google在google.appengine.api.images模块中提供了PIL。您可以在App Engine Documentation - Using the Images Python API中看到有关如何使用它的示例。

答案 1 :(得分:1)

我遇到了同样的问题,并在GoogleAppEngineLauncher中找到了我需要将Python路径设置为/usr/local/bin/python2.5

的首选项

我这样做后就开始工作了。

答案 2 :(得分:0)

您不能将PIL与Appengine一起使用;它使用C扩展,不会在沙箱环境中运行。您需要在本地计算机上安装PIL以使用dev_appserver中的图像API,因为图像API的SDK版本本身使用PIL,但这并不意味着您可以通过图像API使用所有PIL;图像API相当有限。

此外,使用Python 2.5进行开发是一个好主意,因为生产环境使用的是版本2.5.2,并非所有Python 2.6语法都可以在生产中使用(特别是“除了FooError作为条形码”),以及开发服务器将测试您的代码是否可以在生产中正常工作。

答案 3 :(得分:0)

大卫·斯科特所说的实际上是正确的。

我遇到了错误,无论我尝试什么补丁,我都无法解决问题。显然,对我来说有用的只是更改C:\ python27_x64上的Python目录,并使用Google App Engine定位pythonw.exe文件。

仅供参考,我使用的是Windows 8.1


文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ appcfg.py",第127行,在     run_file( file ,globals())   在run_file中的文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ appcfg.py",第123行     execfile(_PATHS.script_file(script_name),globals_)   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第5399行,     主(sys.argv中)   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第5390行,主要     result = AppCfgApp(argv).Run()   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第2980行,在运行中     self.action(个体经营)   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第5046行,调用     返回方法()   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第3793行,在更新中     self._UpdateWithParsedAppYaml(appyaml,self.basepath)   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appcfg.py",第3814行,_UpdateWithParsedAppYaml     updatecheck.CheckForUpdates()   CheckForUpdates中的文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ sdk_update_checker.py",第243行     运行时间=运行时))   文件" C:\ Program Files \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ google_appengine \ google \ appengine \ tools \ appengine_rpc.py",第424行,发送     f = self.opener.open(req)   文件" C:\ Python27 \ lib \ urllib2.py",第431行,处于打开状态     response = self._open(req,data)   文件" C:\ Python27 \ lib \ urllib2.py",第449行,在_open中     ' _open',req)   文件" C:\ Python27 \ lib \ urllib2.py",第409行,_call_chain     result = func(* args)   文件" C:\ Python27 \ lib \ urllib2.py",第1240行,在https_open中     上下文= self._context) TypeError:do_open()得到了一个意外的关键字参数' context' 2015-02-08 17:42:53(进程退出代码1)

您现在可以关闭此窗口。

答案 4 :(得分:-1)

你是如何安装PIL的?如果我没记错的话,我必须通过MacPorts安装它才能让App Engine SDK识别它已安装。

您应该安装Python 2.5并使用它,当您使用它时,因为这是App Engine使用的Python版本,并且在本地针对2.6进行开发可能会在您部署应用程序时导致意外问题。