草庐IT

python - 让 Django 1.7 在 Google App Engine 上运行

coder 2023-08-22 原文

谁能帮我们指出如何让 Django >1.5 在 Google App Engine 上运行的说明?我看到很多人声称他们的 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 版本:

  1. 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 上?

最佳答案

You can use any pure Python third party libraries in your Google App Engine application. In order to use a third party library, simply include the files in your application's directory, and they will be uploaded with your application when you deploy it to our system. You can import the files as you would any other Python files with your application.

我的应用程序以这种方式使用 Django 1.7,一切正常。但是,有时由于 App Engine 的限制及其细节,您可能需要破解一些东西。但这取决于您的用例。

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

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

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

  • 虚拟环境根目录
    • .Python
    • 包括
    • 图书馆
    • app-engine-project-root
      • 应用.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 版本 1.9.15 开始,您可以使用 vendoring设立第三方图书馆的机制。您不必再在指向 Python lib 文件夹的应用程序目录中创建符号链接(symbolic link)。

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

from google.appengine.ext import vendor

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

新的目录布局如下。

  • 虚拟环境根目录
    • .Python
    • 包括
    • 图书馆
    • app-engine-project-root
      • 应用.yaml
      • appengine_config.py
      • django-project-root
      • django-app-root

使用带有 -t lib 标志的 pip 在此目录中安装库。

$ pip install -t lib [lib-name]

或者

$ pip install -t lib -r requirements.txt

关于python - 让 Django 1.7 在 Google App Engine 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207326/

有关python - 让 Django 1.7 在 Google App Engine 上运行的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  4. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  7. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  8. ruby-on-rails - before_filter 运行多个方法 - 2

    是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://

  9. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  10. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

随机推荐