使用SAE部署Python運行環境的教程

來源:互聯網
上載者:User
因為 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 osimport sysroot = 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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.