代码之家  ›  专栏  ›  技术社区  ›  thijs

在Google Appengine SDK中使用PIL时出现问题

  •  2
  • thijs  · 技术社区  · 15 年前

    我有一台WindowsServer2008 R2(64位)机器,我想在上面开发一个谷歌Appengine应用程序。

    所以我从python.org安装了python 2.5.4(因为google sdk说我需要2.5和2.5.6没有任何msi) 然后我安装了PIL http://www.pythonware.com/products/pil/ 我使用了1.1.7版的python 2.5 我使用了这两个的32位版本。

    然后我安装了Appengine SDK。

    Hello World工作得很好,但我想操作一个图像,但这不起作用,因为我得到了stacktrace和HTTP 500响应:

    2010-02-18 11:50:27 Running command: "['C:\\Python25\\pythonw.exe', 'C:\\Program Files 
    
    (x86)\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8080', 'd:\\imgsvc']"
    WARNING  2010-02-18 10:50:29,260 datastore_file_stub.py:623] Could not read datastore data from c:\users\admini~1\appdata\local\temp\dev_appserver.datastore
    INFO     2010-02-18 10:50:29,627 dev_appserver_main.py:399] Running application imgsvc on port 8080: http://localhost:8080
    ERROR    2010-02-18 10:50:40,058 dev_appserver.py:3217] Exception encountered handling request
    Traceback (most recent call last):
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3180, in _HandleRequest
        self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3123, in _Dispatch
        base_env_dict=env_dict)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 515, in Dispatch
        base_env_dict=base_env_dict)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2382, in Dispatch
        self._module_dict)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2292, 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 2188, in ExecuteOrImportScript
        exec module_code in script_module.__dict__
      File "d:\imgsvc\imgsvc.py", line 7, in <module>
        outputimage = images.resize(inputimage.content, 32, 32)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\images\__init__.py", line 625, in resize
        return image.execute_transforms(output_encoding=output_encoding)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\images\__init__.py", line 513, in execute_transforms
        response)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 78, in MakeSyncCall
        return apiproxy.MakeSyncCall(service, call, request, response)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 278, in MakeSyncCall
        rpc.CheckSuccess()
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_rpc.py", line 149, in _WaitImpl
        self.request, self.response)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall
        method(request, response)
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\images\images_stub.py", line 171, in _Dynamic_Transform
        response_value = self._EncodeImage(new_image, request.output())
      File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\images\images_stub.py", line 193, in _EncodeImage
        image.save(image_string, image_encoding)
      File "C:\Python25\lib\site-packages\PIL\Image.py", line 1439, in save
        save_handler(self, fp, filename)
      File "C:\Python25\lib\site-packages\PIL\PngImagePlugin.py", line 564, in _save
        import ICCProfile
    SystemError: Parent module 'PIL' not loaded
    INFO     2010-02-18 10:50:40,081 dev_appserver.py:3246] "GET / HTTP/1.1" 500 -
    

    我尝试运行的python脚本:

    from google.appengine.api import urlfetch
    from google.appengine.api import images
    
    url = "http://www.brokenwire.net/bw/images/113.png"
    inputimage = urlfetch.fetch(url)
    if inputimage.status_code == 200:
        outputimage = images.resize(inputimage.content, 32, 32)
        self.response.headers['Content-Type'] = "image/png"
            self.response.out.write(outputimage)
    

    有人知道这里出什么事了吗?

    我还尝试了这个独立的python脚本,它可以很好地工作:

    import Image
    im = Image.open('filename.png')
    im2 = im.resize((100,100), Image.ANTIALIAS)
    im2.show()
    

    我使用哪种图像似乎有所不同:

    url = "http://www.r-stone.net/blogs/ishikawa/uploaded_images/google_appengine-779483.png"
    

    给出问题的堆栈跟踪,但是

    url = "http://www.brokenwire.net/bw/images/113.png"
    

    毫无问题地工作。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Refael Ackermann    14 年前

    except ImportError:

    except Exception:

        3
  •  0
  •   Emilien    15 年前