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
,省略了“导出”,还尝试了写入.sh文件(使用必要的#!bin
/ bash …)
我有一个主要问题和一个后续问题:主要:解决我的问题的最佳实践方法是什么?跟进:cron具有与我的shell不同的路径访问权限的背后的哲学是什么?
在我投票失败之前,我会提到我已阅读但未成功(或正确解析)以下内容:-在哪里可以设置crontab将使用的环境变量? -运行Python的Crontab问题-
http
: //pythonadventures.wordpress.com/2012/03/31/calling-a-python-
script-from-
crontab/
问题答案:
尝试从虚拟作业中打印出环境变量
* * * * * env > /tmp/env.output
如https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-
work中
所建议
还要检查crontab使用了什么shell。您可以通过添加一行将$SHELL
环境变量设置为bash
SHELL=/bin/bash
在crontab文件的开头。