如何在Python程序中嵌入/生成交互式shell



我有一个Python 3 CLI应用程序,我想从中放入或生成一个交互式bash shell(在设置了一些自定义环境变量之后(。

在Python中嵌入或生成交互式bash shell的最佳方法是什么?

更多详细信息

整个过程可以描述为以下6个步骤:

  1. 用户在终端会话中启动我的CLI应用程序。(无论应用程序是在iTerm还是Xterm诸如此类的环境中运行,它都应该工作,但底层系统是Unix系统。(

  2. 然后应用程序通过提示从用户那里收集一些信息(因此应用程序使用stdin和stdout(。

  3. 然后它应该生成一个bash shell提示符。这个狂欢假定为:

    • 在与我的应用程序相同的终端会话中运行
    • 使用由我的应用程序预先设置的带有一些自定义环境变量的环境
  4. 用户在bash shell中执行一些命令(使用以前我的应用程序中的相同stdin和stut(。

  5. 用户通过Ctrl-d或exit存在bash shell。

  6. bash shell关闭,我的Python应用程序在同一个终端会话中再次接管。它做了一些后期[制作和完成。

我要问的部分是步骤3(生成bash shell(

我试图引发一场狂欢

  1. 我尝试使用标准库中的代码模块,但这只允许我启动Pythonshell,而不是bashshell。

  2. 我用了sh包:

    from sh import bash
    bash('-i')
    

    这也不起作用。

只是:

import subprocess
subprocess.run(['bash', '-li'])

您可以通过env函数参数以及--rcfilebash参数传递自定义环境。

这能解决你的问题吗:

import os
os.system("x-terminal-emulator -e /bin/bash")

获得升级的外壳

python3 -c 'import pty; pty.spawn("/bin/bash")'

最新更新