温普蒂和吉特巴什



我遇到了与 Python 在 git bash 的命令行中不起作用相同的问题,在 Git Bash 中,当我键入Python时,它只是挂起。

但是,键入winpty python可以完美地工作。

winpty到底是什么?为什么上面的命令有用?

引用自述文件:

winpty是一个Windows软件包,提供类似于Unixpty-master的接口,用于与Windows控制台程序进行通信。

Winpty 是一个兼容层,允许您从 Linux 终端运行 Windows 控制台应用程序。

  • 当您从 Linux 交叉编译适用于 Windows 的程序时,生成的二进制文件将是一个 Windows 控制台应用程序,可以直接从 Linux 终端运行,而无需winpty
  • 但是,如果您在Windows上本机构建程序,则生成的二进制文件将是无法从Linux终端运行的Windows GUI应用程序.
    为了从Linux终端运行Windows GUI应用程序,您需要使用winpty

这就是为什么您需要它,如下所述:

该软件的工作原理是使用新的隐藏控制台窗口启动winpty-agent.exe过程,该窗口在控制台 API 和终端输入/输出转义代码之间架起桥梁。它会轮询隐藏控制台的屏幕缓冲区以查找更改,并生成相应的输出流。

rprichard/winpty提到:

该软件包包含一个库(libwinpty)和一个用于Cygwin和MSYS的工具,用于在Cygwin/MSYS pty中运行Windows控制台程序。

详见"mintty/mintty提示":

当与使用本机Windows API进行命令行用户交互("控制台模式")的程序交互时,观察到许多不良影响;这是pty不兼容问题和字符编码不兼容问题.
这基本上会影响所有未在cygwin或msys环境中编译的程序(请注意,MinGW在这种情况下不是msys)。

作为解决方法,您可以使用winpty作为包装器来调用 Windows 程序。

<小时 />

所以:

为什么许多工具都可以在普通的CygWin中工作,但其中一些也需要winpty?

这是在问题 2645 中提出的(特别是针对 Pythonmsys2/MINGW-packages

使用WinPty的成本为非零,大多数时候,Mintty无论如何都可以正常工作.
您的问题源于尝试使用本机Windows构建的mingw python,因此希望从Windows控制台使用它.
mintty使用管道进行输入/输出,因此它看起来不像大多数程序的合适终端。

另一方面,如果你使用msys2(或cygwin)python(.e.g/usr/local/bin/python2),一切正常。

(使用msys2/MINGW-packagesPR 2675,python3 正确检测终端)


参见Gabriel Staples的">Python not working in the command line of git bash"。

相关内容

  • 没有找到相关文章

最新更新