因此,我在Django上建立了一个网站,并希望将其部署到Google App Engine, 网站本身已部署,但没有所有静态文件。
此外,.txt文件中还有一个数据集,我的网站要运行该数据集(这是一个机器学习项目。),但找不到它,浏览器只会抛出文件未找到错误。
如果有人可以帮助我,那将非常酷。
这是app.yaml文件。
runtime: python37
entrypoint: gunicorn -b :$PORT predictweb.wsgi
handlers:
- url: /static
static_dir: static/
- url: /.*
script: auto
答案 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
显示了两个问题:
\
与* nix一个/
混合使用。您需要在GAE上使用* nix,但是最好使用os.path.join()
而不是手动操作路径app.yaml
文件的路径)。您的情况应该是pages/songdatabase1.txt