使用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 基础学习第二弹 类属性和实例属性
Aug 27 Python
采用python实现简单QQ单用户机器人的方法
Jul 03 Python
python中的函数用法入门教程
Sep 02 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
python逆序打印各位数字的方法
Jun 25 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
Python urllib.request对象案例解析
May 11 Python
使用scrapy实现增量式爬取方式
Jun 21 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.ini中文版(1)
2006/10/09 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
小程序实现多选框功能
2018/10/30 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
python编程实现归并排序
2017/04/14 Python
安装Python的教程-Windows
2017/07/22 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Pycharm中如何关掉python console
2020/10/27 Python
大学生求职推荐信
2013/11/27 职场文书
党员教师一句话承诺
2014/05/30 职场文书
建筑管理专业求职信
2014/07/28 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
学校运动会报道稿
2014/09/23 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
部门2014年度工作总结
2014/11/12 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers