使用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中的两个内置模块介绍
Apr 05 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
python方向键控制上下左右代码
Jan 20 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
python字符串下标与切片及使用方法
Feb 13 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
Python获取对象属性的几种方式小结
Mar 12 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python echarts实现数据可视化实例详解
Mar 03 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python中的自省(反射)详解
2015/06/02 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
结束运行python的方法
2020/06/16 Python
如何在pycharm中安装第三方包
2020/10/27 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
幼儿园清明节活动总结
2014/07/04 职场文书
学校消防安全责任书
2014/07/23 职场文书
教师工作决心书
2015/02/04 职场文书
出生证明格式
2015/06/15 职场文书
培训计划通知
2015/07/15 职场文书
初二英语教学反思
2016/02/15 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python