使用SAE部署Python運(yùn)行環(huán)境的教程
因?yàn)?GAE 在國(guó)內(nèi)訪問(wèn)不便,所以平時(shí)有一些小應(yīng)用,我都會(huì)放在 SAE 上面, 雖然 SAE 還有很多缺陷,但算是上手比較容易的一個(gè)了,最起碼文檔寫的不錯(cuò)。
開發(fā) SAE 上的應(yīng)用,我一般都用 Flask,SAE 預(yù)裝了 Flask,所以你可以直接用, 但我們難免會(huì)用一些沒有預(yù)裝的庫(kù)。
如果是在以前,可能需要自己將 package 挨個(gè) copy 到應(yīng)用目錄中,然后手動(dòng)加載, 現(xiàn)在嘛,不需要那么麻煩了,SAE 有個(gè)非常不錯(cuò)的解決方案,見《安裝依賴的第三方包》
你可以使用 saecloud 來(lái)代替 pip 安裝第三方庫(kù)
saecloud install -r requirements.txt
這條命令會(huì)將第三方庫(kù)安裝在應(yīng)用目錄的 site-packages 目錄下面,部署時(shí)可以將所有的依賴 打包成 zip 檔案,這樣上傳和維護(hù)都很方便。
cd site-packages/ zip -r ../site-packages.zip .
在 index.wsgi 中將這些依賴加載進(jìn)來(lái)
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'))
雖然是二者取其一,但學(xué)是推薦使用 zip 檔案的方式。
有個(gè)問(wèn)題是,我們需要打包的,只是 SAE 沒有預(yù)裝的包, 但我們本地開發(fā)還要依賴 Flask 這些預(yù)裝的包, 都使用 saecloud 安裝的話,這個(gè)包明顯就會(huì)有冗余。
借鑒于 bower, npm 這些包管理器的依賴管理的優(yōu)點(diǎn), 我們顯然應(yīng)該將依賴庫(kù)分離出來(lái)。
# 安裝非預(yù)裝依賴 pip install -r requirements.txt # 維護(hù)預(yù)裝依賴 saecloud install -r requirements-dev.txt
這樣,只有 requirements.txt 中的包會(huì)被安裝到應(yīng)用目錄下的 site-packages 文件夾中。
經(jīng)過(guò)一些實(shí)踐,我整理了自己用著比較順手的源代碼文件結(jié)構(gòu)
Makefile
README.md
requirements-dev.txt
requirements.txt
site-packages
...
site <--- web app 目錄
index.wsgi
main.py
config.yam
site-packages.zip <--- 打包的依賴庫(kù)
...
我會(huì)將下面的文件加入到 .gitignore,以避免它們被提交到版本中。
/site/site-packages.zip
/site/index.wsgic
為了方便安裝依賴和部署項(xiàng)目,我寫了個(gè) Makefile
- Python自動(dòng)化運(yùn)維和部署項(xiàng)目工具Fabric使用實(shí)例
- Python自動(dòng)化部署工具Fabric的簡(jiǎn)單上手指南
- Linux下將Python的Django項(xiàng)目部署到Apache服務(wù)器
- 在Linux系統(tǒng)上部署Apache+Python+Django+MySQL環(huán)境
- 使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)
- 在Docker上開始部署Python應(yīng)用的教程
- 使用Python腳本對(duì)GiteePages進(jìn)行一鍵部署的使用說(shuō)明
相關(guān)文章
pyTorch深入學(xué)習(xí)梯度和Linear Regression實(shí)現(xiàn)
這篇文章主要介紹了pyTorch深入學(xué)習(xí),實(shí)現(xiàn)梯度和Linear Regression,文中呈現(xiàn)了詳細(xì)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09python 轉(zhuǎn)換 Javascript %u 字符串為python unicode的代碼
這篇文章主要介紹了python 轉(zhuǎn)換 Javascript %u 字符串為python unicode的代碼,需要的朋友可以參考下2016-09-09python調(diào)用subprocess模塊實(shí)現(xiàn)命令行操作控制SVN的方法
這篇文章主要介紹了使用python的subprocess模塊實(shí)現(xiàn)對(duì)SVN的相關(guān)操作,通過(guò)設(shè)置GitSvn類,在該類下自定義執(zhí)行SVN常規(guī)操作的方法,需要的朋友跟隨小編一起看看吧2022-09-09用Python實(shí)現(xiàn)職工信息管理系統(tǒng)
這篇文章主要介紹了用Python實(shí)現(xiàn)職工信息管理系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12