使用anaconda en运行crontab作业

2024-04-24 08:11:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让cron作业使用一个已经存在的名为my env的anaconda python环境执行一个python脚本。我唯一能想到的是让cron作业运行一个名为my_script.bash的脚本,然后激活env并运行python脚本。

#!/bin/bash
source activate my_env
python ~/my_project/main.py

尝试从命令行执行此脚本无效:

$ sh scripts/my_script.bash
scripts/my_script.bash: 9: scripts/my_script.bash: source: not found

我需要做什么来确保正确的环境被激活。像我5岁那样向我解释是可以的。


Tags: envproject脚本bashsourcebin环境main
3条回答

在我的例子中,当我运行这行shell脚本时出现了这个错误:source activate my_env

activate: No such file or directory

所以我把source activate my_env改成source /path/to/conda/bin/activate my_env。然后开始工作。

我最近从切换到Anaconda正是为了避免在cron作业中激活env。 基于路径环境变量,Anaconda使这一点非常简单。(我使用的不是完整的水蟒安装程序,但我相信水蟒应该以相同的方式工作)

有两种不同的方法,我已经测试过了

  • 在python脚本中添加一个shebang,main.py

    #!/home/users/user_name/miniconda2/envs/my_env/bin/python

  • 将路径添加到crontab的顶部

    PATH=/home/users/user_name/miniconda2/envs/my_env/bin

更新:

杰罗姆的回答和卡布里克的评论是正确的。我刚刚在Conda环境中使用了上述方法,这个环境需要pynco,,而这个环境需要完整的Conda环境来找到合适的nco命令,例如ncks, ncrcat.,通过从cron运行bash脚本来解决,cron首先调用Conda activate。

不要调用sh,而是调用bashsource是bash命令。

- sh scripts/my_script.bash
+ bash scripts/my_script.bash

或者只是

chmod +x scripts/my_script.bash
./scripts/my_script.bash

因为你加了一个猛击。

相关问题 更多 >