SAE 安装未包含的第三方依赖包

如何使用virtualenv管理依赖关系

当你的应用依赖不少第三方包时,能够使用virtualenv来管理并导出这些依赖包,流程以下:python

首先,建立一个全新的Python虚拟环境目录ENV,启动虚拟环境。flask

$ virtualenv --no-site-packages ENV
$ source ENV/bin/activate
(ENV)$

能够看到命令行提示符的前面多了一个(ENV)的前缀,如今咱们已经在一个全新的虚拟环境中了。app

使用pip安装应用所依赖的包并导出依赖关系到requirements.txt。工具

(ENV)$ pip install Flask Flask-Cache Flask-SQLAlchemy
(ENV)$ pip freeze > requirements.txt

编辑requirements.txt文件,删除一些sae内置的模块,eg. flask, jinja2, wtforms。ui

使用dev_server/bundle_local.py工具,将全部requirements.txt中列出的包导出到本地目录virtualenv.bundle目录中。若是文件比较多的话,推荐压缩后再上传。spa

(ENV)$ bundle_local.py -r requirements.txt
(ENV)$ cd virtualenv.bundle/
(ENV)$ zip -r ../virtualenv.bundle.zip .

将virutalenv.bundle目录或者virtualenv.bundle.zip拷贝到应用的目录下。命令行

修改index.wsgi文件,在导入其它模块以前,将virtualenv.bundle目录或者virtualenv.bundle.zip添加到module的搜索路径中,示例代码以下:orm

import os import sys app_root = os.path.dirname(__file__) # 二者取其一 sys.path.insert(0, os.path.join(app_root, 'virtualenv.bundle')) sys.path.insert(0, os.path.join(app_root, 'virtualenv.bundle.zip'))  //坑爹的地方来了,最好不要使用zip压缩包,会报错,使用上面的文件夹最好 

到此,全部的依赖包已经导出并加入到应用的目录里了。server

更多virtualenv的使用能够参考其官方文档。 http://pypi.python.org/pypi/virtualenvip

注解

  1. 请删除requirements.txt中的wsgiref==0.1.2这个依赖关系,不然可能致使 bundle_local.py导出依赖包失败。
  2. 有些包是not-zip-safe的,可能不工做,有待验证。 含有c扩展的package 不能工做。

 

试用新浪SAE-python云平台

http://www.higis.org/2012/05/23/sina-sae-python/

相关文章
相关标签/搜索