Python脚本在cron作业中运行时会引发错误,但不会在其他时间发生

Mik*_*ard 3 python shell cron crontab

我有一个shell脚本,包括执行python脚本.当我在终端中手动运行它时,它工作正常.但是,当我在cron作业中执行shell脚本时,python脚本失败.

当函数从module1导入module2时,显然会触发错误.错误引用的函数不在导入的函数中,也不是语法错误在其自身执行时引发错误的函数.

这是我运行cron作业时记录的错误:

File "/Users/me/module2.py", line 5, in <module>
    from module1 import consolidate_rankings, build_all
  File "/Users/me/module1.py", line 159
    things = {row["thing"]: row for row in rows}
                                          ^

SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

module2脚本非常简单:

#!/usr/bin/env python 

from module1 import consolidate_rankings, build_all

consolidate_rankings()
build_all()
Run Code Online (Sandbox Code Playgroud)

这是在shell脚本中调用它的行:

python /Users/me/module2.py

任何人都知道这里发生了什么?

Gre*_*ill 6

您可能正在使用不同版本的Python从cron运行脚本,该版本不支持字典理解语法.

要解决此问题,请在shebang行中显式添加所需的Python版本:

#!/usr/bin/env python2.7
Run Code Online (Sandbox Code Playgroud)

或者通过正确的命令从cron启动脚本:

* * * * /usr/bin/python2.7 /path/to/script.py
Run Code Online (Sandbox Code Playgroud)