每當我登入我的 ec2 Ubuntu 實例時,我的終端機都是這樣的
(base) ubuntu@ip-xx-xx-xx
當我運行從具有預設 conda 環境的 Jupyter 筆記本轉換而來的 Python 腳本時,腳本運行完美。當我嘗試執行 cronjob 時,問題就開始了。
當實例啟動時(我將盡力解釋),運行腳本的 ipython 找不到套件。因為它是預設的 conda 環境。我以為我所要做的就是以某種方式啟動來源 bash,但一切都失敗了。到目前為止我嘗試過的
- 我嘗試過執行 bash
- 我嘗試將 bash 添加到 SHELL
- 我嘗試獲取 bash 的源碼
- 我嘗試直接從 conda 環境運行 ipython
此時我不知道我錯過了什麼。我想要的只是當實例開始「啟動」 conda 環境並使用 ipython 運行腳本時。
答案1
我猜 virtualenv 正在被激活.profile
,這不會影響 cron。
我建議在 crontab 行中啟動 venv:
SHELL=/bin/bash
[crontab stuff] . /path/to/the/virtualenv/bin/activate && your.py
設定 SHELL=/bin/bash 並不是真正強制的,但會讓你更接近「通常」的環境。如有必要,也可以設定 PATH、cd 到正確的目錄等。
一個不錯的測試方法是ssh you@yourserver 'the command above'
如果您遇到錯誤,請嘗試附加&>/tmp/debug.log
到 crontab 命令。
如果您不確定 virtualenv 路徑是什麼,請嘗試:( type activate
、echo $PATH
等print(sys.path)
)
更多資訊:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758