Cron& Virtualenv:Cron没有运行需要virtualenv的python脚本

时间:2013-06-25 00:03:40

标签: cron virtualenv pythonbrew

编辑2 27/06/2013:问题是与venv和cron无关的愚蠢错误。 使用创建venv的同一用户从cron运行venv可以使用下面描述的激活工作。

编辑 25/06/2013:由于在cron运行后nohup.out没有变化,我怀疑问题在于使用virtualenv。 cron的设置与从命令行运行脚本的用户相同。


我编写了一个脚本来激活venv然后运行python脚本。当我这样做时,它从命令行运行完美。

nohup /home/heyheyhey/run.sh &

但是,由于某些黑魔法原因,python部分不能从cron运行:

0 4 * * * /home/heyheyhey/run.sh &

run.sh的内容:

#! /bin/bash
cd /home/heyheyhey
. /home/heyheyhey/.pythonbrew/venvs/Python-2.7.2/venvname/bin/activate 2> error.log
python /home/heyheyhey/top.py 2> error.log
bzip2 -c "Exporter.csv" > "extraction.csv.bz2"

自创建输出压缩文件以来,run.sh执行。 但是python脚本不起作用,因为Exporter.csv没有更新,我没有在日志文件中看到活动。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

cron工作的环境通常与您看到的环境不同 当您登录交互式shell时。特别是,你可能想要 检查python解释器是否在cron作业的$ PATH上。如果你的 python程序读取任何环境变量,你应该检查那些 确保它们在cron下按预期设置。