我尝试使用os.system()
,subprocess.call()
和subprocess.Popen()
{使用和不使用选项shell=True
}来执行module load ___
在我的python脚本中。即使脚本成功运行并且它提到我的模块已经加载到终端中,我也无法使用它。我正在开发一个ssh客户端。当我直接将它作为命令行运行时,module load _____
工作正常。
答案 0 :(得分:0)
我认为问题是os.system和subprocess都在......井,子进程中运行命令。因此,模块在子进程上下文中成功加载,并立即存在。但是在python的进程上下文中没有任何影响。
我现在不在电脑附近尝试一下,这应该可行:
run_py.sh:
pyfile=$1
shift 1
python $pyfile $(tty) $@ &
这将运行你的python文件,第一个参数是当前tty设备的路径,所有其他参数如下。 解析参数,将tty设备路径保存到tty_dev。现在你可以运行:
os.system('echo "module load <>" > ' + tty_dev)