Python脚本可以手动工作,但不能从cron作业中工作

时间:2018-04-27 21:55:11

标签: bash python-3.x

我有一个Python脚本,它从环境变量中获取一段数据:

password = os.environ["SomePassword"]

当我手动运行脚本时,脚本按预期工作,但是当脚本在shell文件中并由cron作业运行时,它会在" KeyError"的那一行上失败,我假设它是找不到变量。

另外,当我以运行cron作业的同一个用户运行以下任何一个时,我会看到变量符合预期。

echo $SomePassword
env
printenv

发生了什么以及我该如何解决这个问题?

更新 我能够通过阅读建议的重复问题来解决这个问题 - 但是,这个问题没有描述根本问题,这可能是其他人感兴趣的。

1 个答案:

答案 0 :(得分:0)

这是因为未声明环境变量,而是未为其分配值。

当您手动运行它时它会起作用,因为登录后会运行各种环境脚本(例如〜/ .bashrc,〜/ .bash_profile,可能还包括其他类似/ etc / bashrc的脚本)。

您可以通过创建一个简单的脚本来进行测试,该脚本将所有环境变量保存到文件中并使用cron进行调度。运行后,检查文件中的内容。