我相信在环境稍有修改的情况下运行外部命令是很常见的情况。这就是我倾向于这样做的方式:
import subprocess, os
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
我感觉到有更好的办法了。看起来还好吗?
我认为os.environ.copy()
如果你不打算为当前过程修改os.environ
会更好:
import subprocess, os
my_env = os.environ.copy()
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
问题内容: 我使用以下代码临时修改环境变量。 此上下文主要用于测试用例。例如, 我的问题:有没有简单/优雅的书写方式?我想过实际上做,然后..但我不知道是否会影响程序行为(例如:如果被 引用 在Python解释器在其他地方)。 问题答案:
问题内容: 我对使用时如何搜索可执行文件感到困惑。如果给子进程提供了绝对路径,那么它就可以工作,但是我正在尝试使用相对路径。我发现,如果设置环境变量PYTHONPATH,则可以从该路径中获取导入的模块,并且PYTHONPATH在其中,但似乎对的行为没有帮助。我也尝试编辑将PYTHONPATH添加到的文件,就像这样 并验证了在以交互方式,与ipython或通过从命令行运行脚本启动python时,PY
问题内容: 在Linux中,当我从外壳中调用python时,它将复制其环境,并启动python进程。因此,如果我执行以下操作: 当python进程返回时,假设FOO最初是未定义的,它将仍然是未定义的。python进程(或任何子进程)是否可以修改其父进程的环境? 我知道您通常使用类似的方法解决此问题 但这与我的其他要求相冲突。 问题答案: 任何流程都不能更改其父流程(或任何其他现有流程的环境)。 但
问题内容: 如何从Python脚本持久地修改Windows环境变量?(这是setup.py脚本) 我正在寻找用于此的标准功能或模块。我已经很熟悉注册表的实现方式,但是也欢迎对此提出任何意见。 问题答案: 使用setx的缺点很少,尤其是当您尝试附加到环境变量(例如setx PATH%Path%; C:\ mypath)时,这将在每次运行时重复附加到路径中,这可能是一个问题。更糟糕的是,它无法区分机器
问题内容: 我曾尝试研究流程生成器,但不确定如何将bash环境引入流程。 例如,我使用以下代码启动我的流程: 而且我想将我的标准外壳环境(来自/etc/profile、.bashrc等)源于该进程。 抱歉,如果我使用的术语不正确-仍在学习Java。 在此先感谢您的帮助! 问题答案: 您需要使用ProcessBuilder设置外壳程序调用。执行以下命令:
问题内容: 有没有办法使用python以平台独立的方式修改环境变量? 类似于? 问题答案: 您应该能够进行修改。 由于是分隔不同路径的字符,因此应使用此字符追加每个新路径: 或者,如果要在列表中添加多个路径: 如前所述,在必须从单独的部分构造路径的情况下,也可以用于必须附加的每个路径。