使Django 1.7在Google App Engine上运行
问题内容:
谁能帮助我们指出如何在Google App Engine上使用Django> 1.5的说明?我已经看到许多人声称他们可以使用Django
1.6。我们希望运行1.6或1.7。我在这里搜索了有关如何进行设置的说明。到目前为止没有运气。
更新:在我们的开发机器中,我们安装了Django 1.7(在/ user / local和virtualenv上)。但是,如果我们将GAE
yaml修改为使用Django 1.7,则会收到以下错误消息:
google.appengine.api.yaml_errors.EventError: django version "1.7" is not supported, use one of: "1.2", "1.3", "1.4", "1.5" or "latest" ("latest" recommended for development only) in "./app.yaml",
在我们的/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-
default.bundle/Contents/Resources/google_appengine/lib目录中安装的1.9.12版GoogleAppEngine
sdk显示了列出的以下Django版本:
- django-0.96 django-1.2 django-1.3 django-1.4 django-1.5
我的问题与如何在Google App Engine上正确地为Django 1.7设置开发环境以及如何确保在生产环境中部署到Google App
Engine时成功地使用Django 1.7部署应用程序有关。部署应用程序时,如何使Django 1.7部署在GAE上?
问题答案:
您可以在Google App
Engine应用程序中使用任何纯Python第三方库。为了使用第三方库,只需将文件包含在应用程序的目录中,当您将其部署到我们的系统时,这些文件就会与您的应用程序一起上传。您可以像使用应用程序的任何其他Python文件一样导入文件。
我有使用Django 1.7这样的应用程序,并且一切正常。但是,有时由于App
Engine的限制及其具体特点,您可能需要对某些内容进行修改。但这取决于您的用例。
我还建议为您的项目使用虚拟环境。直接通过pip安装App Engine不支持的每个库,然后在应用程序目录中创建指向给定库的符号链接。
这样,您可以将所有必需的程序包与源文件一起保存在可以存储在SCM系统(例如Git)中的文件(例如Requirements.txt)中,其他团队成员可以轻松地复制您的工作环境。
前提是您使用虚拟环境并通过pip安装了所有必需的库(Django,…),这是适合您的目录布局。
- 虚拟环境根
- 。蟒蛇
- 箱子
- 包括
- LIB
- app-engine-project-root
- app.yaml
- django-project-root
- django-app-root
- symlink-to-django-> lib / python2.7 / site-packages / django
- symlink-to-another-lib-> lib / python2.7 / site-packages / …
使用以下命令可以轻松部署这样的布局。
$ appcfg.py update app-engine-project-root
或与App Engine开发服务器一起测试。
$ dev_appserver.py app-engine-project-root
更新
由于App Engine上的Python
SDK版本,15年9月1日,你可以使用vendoring机制建立第三方库。您不必再在应用程序目录中创建指向Python
lib文件夹的符号链接。
直接在应用程序根目录中创建lib目录,并告诉应用程序如何通过appengine_config.py
文件在此目录中查找库。
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
新的目录布局如下。
- 虚拟环境根
- 。蟒蛇
- 箱子
- 包括
- LIB
- app-engine-project-root
- LIB
- app.yaml
- appengine_config.py
- django-project-root
- django-app-root
将pip与-t lib标志一起使用可在此目录中安装库。
$ pip install -t lib [lib-name]
要么
$ pip install -t lib -r requirements.txt