Ubuntu Cronjob無法執行conda環境

Ubuntu Cronjob無法執行conda環境

每當我登入我的 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 activateecho $PATHprint(sys.path))

更多資訊:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758

相關內容