python crontab和路径
我有一个Python驱动程序和一些库脚本,它们是兄弟关系:
/home/mydir/pythonProjs/
driver.py
lib.py
在driver.py
里,我有这么一行代码:
from lib import method1
在我的Linux命令行中,运行以下命令是成功的:
python /home/mydir/pythonProjs/driver.py
但是当我在crontab中尝试以下命令时:
10 1 * * * export PYTHONPATH=~/mydir/pythonProjs; python /home/mydir/pythonProjs/driver.py
我遇到了这个错误:
ImportError: No module named lib.method1
我还尝试过在crontab命令中将路径设置为完整路径/home/mydir/pythonProjs
,省略了'export',并且还尝试过写.sh文件(包含必要的#!bin/bash...)
我有一个主要问题和一个后续问题: 主要问题:有什么好的方法来解决我的问题? 后续问题:为什么cron的路径访问和我的shell不同?
在我被快速投票否决之前,我想提一下,我已经阅读过但没有成功(或者没有正确理解)以下内容: - 我可以在哪里设置crontab将使用的环境变量? - crontab运行Python时的问题 - http://pythonadventures.wordpress.com/2012/03/31/calling-a-python-script-from-crontab/
1 个回答
7
尝试从一个虚拟任务中打印出环境变量
* * * * * env > /tmp/env.output
这个建议可以参考 这个链接
还要检查一下 crontab 使用的是哪个 shell。你可以通过在 crontab 文件的开头添加一行来把 $SHELL
环境变量设置为 bash
:
SHELL=/bin/bash
这样做可以确保 crontab 使用 bash 这个命令行工具。