使用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抓取网页时字符集转换问题处理方案分享
Jun 19 Python
Python yield 使用浅析
May 28 Python
python 使用get_argument获取url query参数
Apr 28 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
Python如何生成树形图案
Jan 03 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
python3让print输出不换行的方法
Aug 24 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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下统计用户在线时间的一种尝试
2010/08/26 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
virtualenv介绍及简明教程
2020/06/23 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
navabi英国:设计师大码女装
2019/06/25 全球购物
自主实习接收函
2014/01/13 职场文书
职工运动会感言
2014/02/07 职场文书
工程质量月活动方案
2014/02/19 职场文书
关于学习的演讲稿
2014/05/10 职场文书
营销团队口号
2014/06/06 职场文书
医德医风自我评价
2014/09/19 职场文书
慰问信模板
2015/02/14 职场文书
大学迎新生欢迎词
2015/09/29 职场文书