在python脚本中设置环境变量

新手上路,请多包涵

我有一个设置环境变量并运行命令的 bash 脚本

LD_LIBRARY_PATH=my_path
sqsub -np $1 /homedir/anotherdir/executable

现在我想使用 python 而不是 bash,因为我想计算我传递给命令的一些参数。

我试过了

putenv("LD_LIBRARY_PATH", "my_path")

call("export LD_LIBRARY_PATH=my_path")

其次是

call("sqsub -np " + var1 + "/homedir/anotherdir/executable")

但程序总是放弃,因为未设置 LD_LIBRARY_PATH。

我怎样才能解决这个问题?

感谢帮助!

(如果我在调用 python 脚本之前导出 LD_LIBRARY_PATH 一切正常,但我希望 python 确定路径并将环境变量设置为正确的值)

原文由 Matthias 009 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 794
2 个回答

庆典:

 LD_LIBRARY_PATH=my_path
sqsub -np $1 /path/to/executable

类似的,在 Python 中:

 import os
import subprocess
import sys

os.environ['LD_LIBRARY_PATH'] = "my_path" # visible in this process + all children
subprocess.check_call(['sqsub', '-np', sys.argv[1], '/path/to/executable'],
                      env=dict(os.environ, SQSUB_VAR="visible in this subprocess"))

原文由 jfs 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用以下方法将元素添加到您的环境中

os.environ['LD_LIBRARY_PATH'] = 'my_path'

并在 shell 中运行子进程(使用你的 os.environ

 subprocess.call('sqsub -np ' + var1 + '/homedir/anotherdir/executable', shell=True)

原文由 Manbeardo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题