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

作者:goldensun 时间:2021-02-21 14:26:54 

因为 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
0
投稿

猜你喜欢

  • PHP数组的基本操作及遍历数组的经典操作实例

    2024-04-28 09:45:09
  • JsonServer安装及启动过程图解

    2023-08-12 20:06:02
  • python3使用urllib示例取googletranslate(谷歌翻译)

    2021-08-31 19:20:34
  • Python 开发工具PyCharm安装教程图文详解(新手必看)

    2023-04-25 05:01:08
  • 在JS中解析HTML字符串示例代码

    2024-04-19 11:02:47
  • Python简单的GUI程序示例详解

    2021-04-10 20:17:16
  • ASP解析JSON

    2009-12-25 16:34:00
  • 如何用MySQL-Front远程连接MySql?

    2010-12-03 16:02:00
  • 程序开发中的几个请不要相信

    2022-08-13 13:04:24
  • Microsoft SQL Server数据库开发问题详解

    2009-10-23 14:16:00
  • 使用Python和GDAL给图片加坐标系的实现思路(坐标投影转换)

    2021-11-10 03:15:31
  • Keras 使用 Lambda层详解

    2021-08-11 20:12:40
  • Python 数据类型--集合set

    2021-11-23 21:17:54
  • Python实现读取机器硬件信息的方法示例

    2021-02-04 16:28:55
  • 零基础学习python偏函数语法的推导方法步骤

    2021-07-17 20:59:18
  • SQL点滴24 监测表的变化

    2011-09-30 11:38:41
  • python使用递归解决全排列数字示例

    2022-02-22 04:14:49
  • Python 实现opencv所使用的图片格式与 base64 转换

    2021-02-28 11:59:09
  • ASP分页类(支持多风格变换)

    2011-04-08 10:39:00
  • Python3正则表达式之:(?(id/name)yes-pattern|no-pattern)条件性匹配

    2022-04-09 14:46:32
  • asp之家 网络编程 m.aspxhome.com