我有一个 shell 脚本,其中包含 python 脚本的执行。当我在终端中手动运行它时,它工作正常。但是,当我在 cron 作业中执行 shell 脚本时,python 脚本失败。
错误显然是在将函数从模块 1 导入到模块 2 时触发的。错误引用的函数不在正在导入的函数中,语法错误应该引发错误的函数在其自身执行时也不在其中。
这是我运行 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
module2 脚本非常简单:
#!/usr/bin/env python
from module1 import consolidate_rankings, build_all
consolidate_rankings()
build_all()
这是在 shell 脚本中调用它的行:
python/Users/me/module2.py
有人知道这里发生了什么吗?
最佳答案
您可能正在使用不支持字典理解语法的不同版本的 Python 从 cron 运行您的脚本。
要解决此问题,请在 shebang 行中明确添加所需的 Python 版本:
#!/usr/bin/env python2.7
或者通过正确的命令从 cron 启动脚本:
* * * * /usr/bin/python2.7 /path/to/script.py
关于Python 脚本在 cron 作业中运行时引发错误,但在其他时间没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24790008/