安装新的Windows系统后,我在其默认位置(c:\cygwin和
c:\Python27\python)安装了CygWin和64位Python(2.7.3),并将CygWin bin和Python目录添加到我的路径中(在用户变量PATH中).从正常的命令窗口,Python启动完美,但是当我bash在CygWin环境中调用它时,它会挂起,从不给我输入提示.
我以前在其他机器上完成了这个,但总是使用旧版本的Python(32位)和CygWin,以及Python在一个非标准的非标准位置.有没有其他人有这个问题,或者有人可以告诉我它可能是由于什么?
Ada*_*eld 39
问题在于,由于Cygwin终端(MinTTY)的行为方式,Python的本机Windows版本没有意识到stdout是一个终端设备 - 它认为它是一个管道,因此它以非交互模式运行交互模式,它完全缓冲其输出而不是行缓冲它.
这是新的原因可能是因为在您之前的Cygwin安装中,您没有MinTTY,并且使用的终端只是标准的Windows终端.
为了解决这个问题,您需要从常规Windows终端(Cmd.exe)运行Python ,或者安装Cygwin版本的Python而不是Python的本机Windows版本.Cygwin版本(可通过Cygwin安装为软件包setup.exe)了解Cygwin终端并在通过MinTTY运行时正常运行.
如果您想要的特定Python版本不能作为Cygwin包使用,那么您也可以下载Python的源代码并在Cygwin下自行构建.如果你还没有一个(GCC),你需要一个Cygwin编译器工具链,但我相信它应该用标准./configure && make && make install命令编译.
mar*_*111 11
我在Mercurial(hg)+ OpenSSH,Python和MinTTY方面遇到了类似的问题,但是在MSYS而不是CygWin下.尽管如此,据我所知,这个和我的问题都是由于MinTTY没有处理使用本机Windows控制台功能的应用程序引起的(在Adam的答案中,他详细解释了Python).
对我来说,我遵循https://code.google.com/p/mintty/issues/detail?id=56#c64的评论64中找到的解决方案
使用winpty(https://github.com/rprichard/winpty)项目编译并在我的路径中,我能够从MinTTY shell 运行本机 Python(在交互模式下)和Mercurial,而无需特殊的构建或开关(例如python -i) .所有我需要的是追加console.exe或console在之前python或hg命令.为方便起见,我添加了别名,alias hg="console.exe hg"所以我可以使用相同的命令,无论我是在Linux shell还是Windows MinTTY bash shell中.
此外,此解决方案似乎适用于python和hg之外的更多本机应用程序.例如,运行mysql(有或没有-p)会产生同样的问题(例如"挂起"没有输入提示).附加console到它允许它像往常一样.
| 归档时间: |
|
| 查看次数: |
19643 次 |
| 最近记录: |