Python 都會使用 virtualenv 來開發,Deploy 當然也希望可以建造一個乾淨的 virtualenv 的環境來搬移。
不過 Python 的 venv 執行的參數作法如下:
- cd venv
- . venv/bin/activate # 進入環境,問題出在這個階段,進不去
- pip install -r requirements.txt # 安裝所需套件
Linux 如何於 Crontab 執行 Python Virtualenv 環境
於「. venv/bin/activate」進不去,所以研究看看 activate code 是寫什麼,結果只是簡單的 shell script,所以只要將 "." 改成 "source" 就可以執行囉~
不過於 crontab 寫法還是要稍微注意 PATH 的問題,crontab 寫法參考:
SHELL=/bin/bash /10 * * * * source /project/venv/bin/activate && /project/bin/exec.py args
這需求也許可以參考 pipenv run 來解決會更優雅一點
感謝指點,我來研究一下~~
提供另外一個方式:activate_this.py
修改 /project/bin/exec.py,在程式碼最上面加上:
this_file = "/project/venv/bin/activate_this.py"
execfile(this_file, dict(__file__ = this_file))
可以讓程式執行時自動 source activate
PS:python 2.6 以下不適用
感謝~ 🙂