所以我知道subprocess
如何运作并使用它很多,但我遇到了一个奇怪的问题。我需要执行一些环境变量的导出。原因是某些程序(黑盒)执行的程序似乎在子shell中运行,因此它无法访问环境变量,但它可以访问我的所有文件。
我无法对环境变量进行硬编码,因此我希望source
或.
包含export
命令的文件。但是,如果我在子流程中存档source
或.
,则不会对其父流程产生任何影响。在这种情况下,除了subprocess
之外我还需要一些能够执行shell命令而不创建子进程的函数(如果存在)。另一个问题是子进程没有适当的权限来读取文件。
通过os
复制环境变量也是不可能的。
除了subprocess
之外还有什么吗?或者还有其他一些解决方法吗?
答案 0 :(得分:1)
恕我直言,最简单的解决方案是创建一个新的shell脚本(让我们称之为run_black_box.sh
)来源安装脚本(我们假设它被命名为setup.sh
)来初始化环境,然后调用black_box程序
以下是run_black_box.sh
的可能内容:
#/bin/bash
source setup.sh
black_box
您可以将run_black_box.sh
传递给subprocess
以执行。