python crontab和路径

5 投票
1 回答
12869 浏览
提问于 2025-04-19 11:44

我有一个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 这个命令行工具。

撰写回答