Google App Engine找不到Django项目的静态文件,也找不到我的网站所依赖的.txt文件

时间:2019-03-19 21:31:58

标签: python django google-app-engine

因此,我在Django上建立了一个网站,并希望将其部署到Google App Engine, 网站本身已部署,但没有所有静态文件。

此外,.txt文件中还有一个数据集,我的网站要运行该数据集(这是一个机器学习项目。),但找不到它,浏览器只会抛出文件未找到错误。

如果有人可以帮助我,那将非常酷。

这是app.yaml文件。

runtime: python37
entrypoint: gunicorn -b :$PORT predictweb.wsgi
handlers:
- url: /static
  static_dir: static/
- url: /.*
  script: auto

1 个答案:

答案 0 :(得分:0)

至少在第一代标准环境(python 2.7)中,默认情况下静态文件/目录将与应用程序代码分离,必须添加application_readable: true才能与应用程序代码一起获得副本。在@lusitanica的评论中链接的帖子中查看详细信息。

但这在第二代handlers doc中并未明确说明。这种分离有点暗示:

  

给定目录中的所有文件均作为静态文件上传   而且它们都不能作为脚本运行。

但是没有提到application_readable。不过,我认为还是值得一试,其他配置虽然已有一段时间没有记录,但可以正常工作,请参见对this post的评论。

另一种想法,假设您可能遵循了一些通用的django指南,该指南通常显示了如何通过django 服务器静态内容-即通过应用程序,而不是通过类似CDN的GAE方法(在app.yaml中进行配置的方式是它的投放方式。

有可能通过app.yaml使它起作用。至少我在Running Django on App Engine Standard Environment中看到了。也许检查您的settings.py,我在文档的github版本参考中看到了

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_ROOT = 'static'
STATIC_URL = '/static/'

但是我不是django用户,无法提供更多详细信息。

如果以上方法均无效,则也可以从static_dir中取出app.yaml配置,让django提供静态内容。我知道这不是最佳选择-使用应用程序CPU周期。

对于.txt文件,

Exception Value: /srv/pages\songdatabase1.txt not found 

显示了两个问题:

  • 您正在将Windows路径分隔符\与* nix一个/混合使用。您需要在GAE上使用* nix,但是最好使用os.path.join()而不是手动操作路径
  • 您使用的是完整路径-您应使用相对于应用顶部目录(存在app.yaml文件的路径)。您的情况应该是pages/songdatabase1.txt