使用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 编码处理-str与Unicode的区别
Sep 06 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python如何保证输入键入数字的方法
Aug 23 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
Python存储读取HDF5文件代码解析
Nov 25 Python
java字符串格式化输出实例讲解
Jan 06 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
使用php判断网页是否gzip压缩
2013/06/25 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
javascript里的条件判断
2007/02/27 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
python删除服务器文件代码示例
2018/02/09 Python
使用python进行拆分大文件的方法
2018/12/10 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
解决Python安装cryptography报错问题
2020/09/03 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
房地产项目建议书
2014/03/12 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2016新年慰问信范文
2015/03/25 职场文书
培训感想范文
2015/08/07 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA