解决方案是运行winpty,您应该已经从 git-bash 中拥有它。现在 git-bash 可以毫无问题地运行应用程序。

解决方案是运行winpty,您应该已经从 git-bash 中拥有它。现在 git-bash 可以毫无问题地运行应用程序。

我会尝试尽可能的描述清楚但简短...

我过去曾在 Win10 上成功使用过 GitBash。有一段时间没用过 Windows 机器后,我又回到了 Windows 机器上,似乎无法让它启动之前毫无问题地运行的 Python 脚本。我为 Python3 创建了一个名为 py 的别名。例如...

$ py --version
Python 3.7.1

我可以很好地进入迭代器

$ py -i
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

我可以在迭代器中很好地运行我的脚本。但是,使用 ctrl+z 退出会引发错误。与此错误相关的是,当我尝试从命令行运行脚本时,它会挂起并且没有响应。见下文...

$ py -i
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>       0 [sig] bash 5224! sigpacket::process: Suppressing signal 18 to 
win32 process (pid 5160)

>>> exit()

$ py Lottery.py

从此时起,它什么都不做,直到我按下“Enter”,此时它会抛出一个 Python 错误并返回到我的命令行。我知道 Python 脚本正在运行。如果有帮助,我可以发布 Python 错误,尽管我认为这是转移注意力的借口,而不是手头 GitBash 问题的症结所在。

关于为什么在尝试运行 Python 脚本时 GitBash 无法正常运行,您有什么想法吗?提前致谢!

答案1

这是 Windows 10 的一个已知问题。GitBash 的终端与 Windows 原生应用程序存在问题,例如python、、等powershellipython

  • 终端会吞噬事件,例如您的屏幕截图。这会破坏ctr+c/ctrl+z事件,从而阻止退出
  • 此外,这些应用程序会破坏光标移动,严重破坏外壳。

解决方案是运行winpty,您应该已经从 git-bash 中拥有它。现在 git-bash 可以毫无问题地运行应用程序。

$ winpty python -i

这修复了python -iipython -i、两个问题powershell。我使用以下别名:

alias ipython='winpty ipython'
alias python='winpty python'
alias node='winpty node'
alias powershell='winpty powershell'

另一种解决方案是使用不同的终端,例如Windows Terminal

最近 Windows 发布了新的Windows 终端

现在它支持所有 bash 应用程序、完整的 utf-8 支持(我见过的最好的 Windows 终端、256+ ANSI 颜色等)您不再需要winpty.

编辑您的 JSON 配置以使用:

"commandline" : "ipython.exe"

如果您正在使用python -i,请查看 ipython。

将其与winpty或 终端结合运行ipython。这对生活质量和可用性来说是一个巨大的提升。

它增加了很多。

  • foo?使用和获取函数签名和文档foo??
  • 复制->粘贴有效。
  • 使用任何超过一行的语句的生活质量都得到了极大改善
  • 语法高亮,甚至匹配括号
  • 姓名的制表符补全检查以下属性:
x = "hi world"
x.<tab> # all `str` methods pop-up.

# or
import time
time.monotonic?

使用获取

python -m pip install ipython

相关内容