【发布时间】:2019-07-12 22:11:43
【问题描述】:
在使用 Pythons subprocess 模块时,我注意到环境变量似乎没有正确设置。以下是 IPython 会话中的示例:
In [21]: subprocess.check_output(["echo", "$DUMMY"], env={"DUMMY" : "321"}, shell=True)
Out[21]: b'\n'
In [22]: subprocess.check_output(["echo", "$DUMMY"], env={"DUMMY" : "321"})
Out[22]: b'$DUMMY\n'
我知道第二个不起作用,因为它不是由 shell 运行的。但第一个是回显未设置的变量时得到的结果。那么为什么这不起作用呢?或者更可能,我做错了什么?
【问题讨论】:
-
我回滚了你的编辑——你的问题应该严格来说是一个问题。
-
@tripleee 当然,这行得通。当您的答案不包含完整的代码解决方案时,我添加它是为了完整性。我同意它最好像现在一样放在您的答案中。
-
将
echo $DUMMY替换为env。您会看到 env var 实际上已设置。提示:像/bin/echo这样的任意命令会执行 var 扩展(例如,$DUMMY=>321)还是由特定程序负责?
标签: python subprocess environment-variables