zoukankan      html  css  js  c++  java
  • SAE 安装未包含的第三方依赖包

    如何使用virtualenv管理依赖关系

    当你的应用依赖很多第三方包时,可以使用virtualenv来管理并导出这些依赖包,流程如下:

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

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

    可以看到命令行提示符的前面多了一个(ENV)的前缀,现在我们已经在一个全新的虚拟环境中了。

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

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

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

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

    (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的搜索路径中,示例代码如下:

    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压缩包,会报错,使用上面的文件夹最好
    

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

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

    注解

    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/

  • 相关阅读:
    Spring-四种常用注解
    Spring-IOC
    Spring-bean 的管理细节
    Android R.java文件
    MySQL | windows10 安装MySQL : 无法将“mysql”项识别为 cmdlet、函数、脚本....
    统计知识 | 决定系数 R方、调整后的R方、F值
    R | R语言表达式中常用的符号
    回归分析 | R语言回归算法、模型诊断
    R | 探索性数据分析 EDA
    R语言基础 | 概率分布的表示方法
  • 原文地址:https://www.cnblogs.com/carlo/p/4324559.html
Copyright © 2011-2022 走看看