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

标签 python shell cron

我有一个 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/

相关文章:

python - 使用字典中的变量值执行写成字符串的数学表达式(python)

python - 我无法在 python shell 中调用 pymongo

linux - 文件内容中的参数中是否存在多个给出的单词?

linux - 从 bash 脚本作为 cronjob 启动 bash 脚本

Azure函数: make schedule cron a variable in function. json

用于检查网站标签的 Python 脚本

基于文本文件字符串的Python条件语句

amazon-web-services - 如何通过 aws ec2 中的用户数据脚本添加 crontab 调度程序?

python - 在 QDialog reject() 上优雅地终止 QThread

windows - 在 Windows 命令中使用密码参数是否安全?