使用SAE部署Python运行环境的教程


Posted in Python onMay 05, 2015

因为 GAE 在国内访问不便,所以平时有一些小应用,我都会放在 SAE 上面, 虽然 SAE 还有很多缺陷,但算是上手比较容易的一个了,最起码文档写的不错。

开发 SAE 上的应用,我一般都用 Flask,SAE 预装了 Flask,所以你可以直接用, 但我们难免会用一些没有预装的库。

如果是在以前,可能需要自己将 package 挨个 copy 到应用目录中,然后手动加载, 现在嘛,不需要那么麻烦了,SAE 有个非常不错的解决方案,见《安装依赖的第三方包》

你可以使用 saecloud 来代替 pip 安装第三方库

saecloud install -r requirements.txt

这条命令会将第三方库安装在应用目录的 site-packages 目录下面,部署时可以将所有的依赖 打包成 zip 档案,这样上传和维护都很方便。

cd site-packages/
zip -r ../site-packages.zip .

在 index.wsgi 中将这些依赖加载进来

import os
import sys

root = os.path.dirname(__file__)

# 两者取其一
sys.path.insert(0, os.path.join(root, 'site-packages'))
sys.path.insert(0, os.path.join(root, 'site-packages.zip'))

虽然是二者取其一,但学是推荐使用 zip 档案的方式。

有个问题是,我们需要打包的,只是 SAE 没有预装的包, 但我们本地开发还要依赖 Flask 这些预装的包, 都使用 saecloud 安装的话,这个包明显就会有冗余。

借鉴于 bower, npm 这些包管理器的依赖管理的优点, 我们显然应该将依赖库分离出来。

# 安装非预装依赖
pip install -r requirements.txt
# 维护预装依赖
saecloud install -r requirements-dev.txt

这样,只有 requirements.txt 中的包会被安装到应用目录下的 site-packages 文件夹中。

经过一些实践,我整理了自己用着比较顺手的源代码文件结构

LICENSE

Makefile

README.md

requirements-dev.txt

requirements.txt

site-packages

  ...

site   <--- web app 目录

  index.wsgi

  main.py

  config.yam

  site-packages.zip   <--- 打包的依赖库

  ...

我会将下面的文件加入到 .gitignore,以避免它们被提交到版本中。

/site-packages

/site/site-packages.zip

/site/index.wsgic

为了方便安装依赖和部署项目,我写了个 Makefile

Python 相关文章推荐
详解Python中的装饰器、闭包和functools的教程
Apr 02 Python
Python分析学校四六级过关情况
Nov 22 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python Pillow图像处理方法汇总
Oct 16 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 #Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
python实现将汉字转换成汉语拼音的库
May 05 #Python
python基于Tkinter库实现简单文本编辑器实例
May 05 #Python
You might like
php+xml编程之xpath的应用实例
2015/01/24 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
Python笔试面试题小结
2019/09/07 Python
解决Python使用列表副本的问题
2019/12/19 Python
sklearn+python:线性回归案例
2020/02/24 Python
基于Python实现简单学生管理系统
2020/07/24 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
香港零食网购:上仓胃子
2020/06/08 全球购物
业务员岗位职责范本
2013/12/15 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
乡镇团代会开幕词
2016/03/04 职场文书