我有一个 Python 脚本,它从环境变量中获取一段数据,如下所示:
password = os.environ["SomePassword"]
当我手动运行脚本时,脚本按预期工作,但是当脚本在 shell 文件中并由 cron 作业运行时,它在该行失败并显示“KeyError”,我假设它没有找到变量。
此外,当我以运行 cron 作业的同一用户身份运行以下任何命令时,我会按预期看到变量。
echo $SomePassword
env
printenv
这是怎么回事,我该如何解决?
更新: 我能够通过阅读建议的重复问题来解决此问题 - 但是,该问题并未描述其他人可能感兴趣的根本问题。
最佳答案
这是因为环境变量没有声明和赋值。
当您手动运行它时它会起作用,因为当您登录时,各种环境脚本会运行(例如 ~/.bashrc、~/.bash_profile,可能还有/etc/bashrc 之类的其他脚本)并且它们已经完成了此操作。
您可以通过创建一个简单的脚本来测试这一点,该脚本将所有环境变量保存到一个文件中并使用 cron 安排它。运行后,检查文件中的内容。
关于bash - Python 脚本手动工作,但不是来自 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070773/