首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让Django 1.7在上工作

让Django 1.7在上工作
EN

Stack Overflow用户
提问于 2014-10-05 21:18:39
回答 3查看 4.3K关注 0票数 7

有人能帮助我们指导如何让Django >1.5在Google上工作吗?我见过一些人声称他们让Django 1.6工作。我们想要1.6或1.7的跑步。我在这里搜索了关于如何设置这个的说明。到目前为止还没有运气。

更新:在我们的开发机器中,我们安装了Django 1.7 (包括/user/local和virtualenv)。但是,如果我们修改GAE yaml以使用Django 1.7,则会得到以下错误消息:

代码语言:javascript
复制
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安装显示了下面列出的GoogleAppEngine版本:

  1. django-0.96 django-1.2 django-1.3 django-1.4 django-1.5

我的问题是如何在Google上正确设置Django 1.7的开发环境,以及如何确保在生产中部署到Google时,我们成功地使用Django 1.7部署我们的应用程序。当我们部署应用程序时,我们如何在GAE上部署Django 1.7?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-06 08:10:58

您可以在Google应用程序中使用任何纯Python第三方库。为了使用第三方库,只需将这些文件包含在应用程序的目录中,当您将其部署到我们的系统时,它们将随应用程序一起上载。您可以像导入应用程序中的任何其他Python文件一样导入这些文件。

我的应用程序是这样使用Django 1.7的,一切都很好。但是,由于App的局限性及其特性,有时您可能需要进行某种黑客攻击。但这取决于您的用例。

我还建议在您的项目中使用虚拟环境。通过pip安装App不支持的每个库,然后在应用程序目录中创建指向给定库的符号链接。

通过这种方式,您可以将所有必需的包保存在一个文件(例如requirements.txt)中,这些包可以与源文件一起存储在SCM系统(例如Git)中,其他团队成员可以很容易地复制您的工作环境。

只要您使用虚拟环境并安装所有所需的库(Django,.)通过pip,这里是应该适合您的目录布局。

  • 虚拟env-root
    • .Python
    • 箱子
    • 包括
    • 应用引擎-项目-根
      • app.yaml
      • django-project
      • django-app-root
      • symlink-to-django -> lib/python2.7/site-packages/django
      • 符号链接到另一个-库->库/python2.7/站点-包/.

使用下面的命令可以轻松地部署这样的布局。

代码语言:javascript
复制
$ appcfg.py update app-engine-project-root

或者用App开发服务器进行测试。

代码语言:javascript
复制
$ dev_appserver.py app-engine-project-root

更新

由于App版本1.9.15,您可以使用扶手机制来设置第三方库。您不必在应用程序目录中创建指向Python文件夹的符号链接。

在应用程序根目录中直接创建lib目录,并告诉应用程序如何通过appengine_config.py文件在该目录中查找库。

代码语言:javascript
复制
from google.appengine.ext import vendor

# Add any libraries installed in the "lib" folder.
vendor.add('lib')

下面是新的目录布局。

  • 虚拟env-root
    • .Python
    • 箱子
    • 包括
    • 应用引擎-项目-根
      • app.yaml
      • appengine_config.py
      • django-project
      • django-app-root

使用pip和-t库标志在这个目录中安装库。

代码语言:javascript
复制
$ pip install -t lib [lib-name]

代码语言:javascript
复制
$ pip install -t lib -r requirements.txt
票数 19
EN

Stack Overflow用户

发布于 2014-10-05 22:22:43

你不能- GAE只支持1.5,即使这被标记为实验性。如果您需要django 1.7,也许您应该使用Google计算引擎,这是谷歌用于虚拟机的品牌名称,您可以使用它。

如果您没有与结婚,Heroku支持django 1.7,没有问题。

您有关于如何将Django 1.7项目移动到的具体指南吗?有一堆谷歌的东西,没有任何指南,如何使他们工作。

下面是步骤,但是如果您部署在任何其他服务器上,它们也是相同的,因为GCE只是提供了一个linux实例:

  1. 首先,确保您的开发人员帐户有一个附加的计费方法。
  2. 开发人员控制台
  3. 单击“项目”创建一个新项目,然后创建“项目”。
  4. 在创建项目时等待(您将在屏幕右下角看到一个进度窗口)。
  5. 项目创建完成后,控制台将自动切换到该项目的设置:

  1. 您可以创建一个新实例,也可以从第二列部署现成的模板。您可以看到,有一些流行的堆栈和软件应用程序为其创建模板。
  2. 由于还没有django模板,所以首先要创建一个实例。
  3. 计费是在每个项目的基础上控制的,所以如果您还没有这样做的话,就可以在此时启用计费。
  4. 下一页是配置实例的位置。这些字段是不言而喻的。您需要设置您喜欢的计算机类型(虚拟CPU和内存多少),如果您希望打开HTTP和HTTPS端口,然后从磁盘映像启动实例,则(物理上)希望机器位于何处:

一旦您配置了机器,它将在线引导,然后您将可以通过SSH访问终端。

从现在开始,您应该像对待任何linux服务器一样对待这个实例。使用普通的打包工具安装任何你需要的东西,上传你的文件,等等。

对于亚马逊来说,这个过程要简单一些,因为有一个非盟驻苏特派团大型图书馆可以用于一键部署过程。AMI是-一个可以部署实例的模板。

对于Heroku来说,作为一个PaaS,您不必担心硬件组件;但是,与大多数PaaS平台一样,您没有对文件系统的写访问权。因此,要管理静态资产,您必须做一些额外的工作。最简单的选择是在亚马逊上创建一个S3桶,并将其与django-storages一起使用。在heroku的正式django教程建议使用dj-static直接从Heroku提供文件。这对于测试来说很好,但是如果您想要开始上传文件,那么您需要正确地处理这些文件。

然而,一旦解决了这些问题,步骤就更简单了:

先决条件:

基本步骤:

  1. 使用git init在源代码目录中创建一个git存储库(如果您还没有完成)。
  2. 在项目的根部创建一个requirements.txt。如果您使用的是虚拟环境,pip freeze > requirements.txt应该这样做。否则,您可以创建一个文本文件并列出所需的包。
  3. 调整您的settings.py,在最下面添加一行:import dj_database_url DATABASES['default'] = dj_database_url.config()
  4. 创建一个Procfile (大小写很重要)。这就是您如何告诉Heroku您的应用程序需要什么样的dyno (进程)。对于django,您需要一个web,所以在这个文件中,下面的行应该这样做:web: gunicorn yourproject.wsgi --log-file -

在Heroku上创建一个应用程序并进行部署。您应该从源代码目录中运行这些命令:

  1. heroku create --buildpack https://github.com/heroku/heroku-buildpack-python
  2. heroku addons:add heroku-postgresql:dev
  3. git push heroku master
  4. heroku run python yourproject/manage.py migrate --noinput
  5. heroku run python web/manage.py collectstatic

您只执行前两个步骤一次,然后每当您需要更新应用程序时,只需使用git push heroku master在Heroku上创建一个新的修订版。

票数 2
EN

Stack Overflow用户

发布于 2014-10-06 04:17:01

App的Python环境目前知道如何通过libraries:配置机制提供到1.5版的Django。这并不意味着Django的后续版本不能工作,只是它们还没有内置。(我不知道为什么最新的内置版本是1.5。这可能与AE将每个受支持的Django版本与SDK捆绑在一起的历史政策有关,这可能需要修改以防止SDK变得太大。)

您可以尝试在应用程序文件中包含Django 1.7。我还没有专门用1.7试过这个,但它适用于以前的版本。在您的sys.path中需要对main.py进行一些调整。

请注意,应用程序文件的限制为10,000个。如果您担心这个限制,一种选择是使用Python的zipimport并将Django作为zip存档。https://docs.python.org/2/library/zipimport.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26207326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档