在AppEngine中加载文件

时间:2010-04-09 11:44:20

标签: python google-app-engine

我有一小段代码来显示文件

在app.yaml

- url: /(.*\.(gif|png|jpg))
  static_files: static/\1
  upload: static/(.*\.(gif|png|jpg))
在main.py中

...
class ShowImage(webapp.RequestHandler):
  def get(self):
      rootpath = os.path.dirname(__file__)
      file = rootpath + "/static/tracker.gif";
      fh=open(file, 'r')
      self.response.out.write(fh.read())
      fh.close 
...

我可以通过转到我的* .appspot.com / tracker.gif(根据app.yaml)看到文件上升 但是使用* .appspot.com / showimage返回

Traceback (most recent call last):
  File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 510, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/APPNAME/2.341131266814384624/main.py", line 170, in get
    fh=open(file, 'r')
IOError: [Errno 2] No such file or directory: '/base/data/home/apps/APPNAME/2.341131266814384624/static/tracker.gif'

2 个答案:

答案 0 :(得分:3)

已移除

- url: /(.*\.(gif|png|jpg))
  static_files: static/\1
  upload: static/(.*\.(gif|png|jpg))
来自app.yaml的

显然你无法提供你愚蠢标记为静态

的文件夹中的内容

Deployment of static directory contents to google app engine

开始

答案 1 :(得分:1)

说明Chris M.所指的内容:

部署应用程序时,与“static_files”处理程序的“upload”属性匹配的任何文件最终都与代码和相关文件完全不同。就您的代码而言,它们已从您希望它们所在的路径中删除。