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/

相關文章
相關標籤/搜索