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
任何人都知道这里发生了什么?
您可能正在使用不同版本的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)