我有一个Python脚本,它从环境变量中获取一段数据:
password = os.environ["SomePassword"]
当我手动运行脚本时,脚本按预期工作,但是当脚本在shell文件中并由cron作业运行时,它会在" KeyError"的那一行上失败,我假设它是找不到变量。
另外,当我以运行cron作业的同一个用户运行以下任何一个时,我会看到变量符合预期。
echo $SomePassword
env
printenv
发生了什么以及我该如何解决这个问题?
更新 我能够通过阅读建议的重复问题来解决这个问题 - 但是,这个问题没有描述根本问题,这可能是其他人感兴趣的。
答案 0 :(得分:0)
这是因为未声明环境变量,而是未为其分配值。
当您手动运行它时它会起作用,因为登录后会运行各种环境脚本(例如〜/ .bashrc,〜/ .bash_profile,可能还包括其他类似/ etc / bashrc的脚本)。
您可以通过创建一个简单的脚本来进行测试,该脚本将所有环境变量保存到文件中并使用cron进行调度。运行后,检查文件中的内容。