Git 2.5.1 的 bash 控制台不打开 python 解释器
Posted
技术标签:
【中文标题】Git 2.5.1 的 bash 控制台不打开 python 解释器【英文标题】:Git 2.5.1's bash console doesn't open python interpreter 【发布时间】:2015-12-03 22:46:52 【问题描述】:如果我在 CMD 中执行它,它可以正常工作,但如果我在 Git Bash 中尝试它就不起作用。我喜欢使用 Git Bash 作为我唯一的控制台,但如果它不适用于 Python 3.4,我就不能这样做。
示例如下图所示。这可以很容易地复制。卸载 Python 和 Git(如果已安装),安装 Python 3.4,安装 Git 2.5.1,然后您就会得到结果。
如何让 Python 解释器在 Git Bash 中工作?
【问题讨论】:
我遇到了同样的问题。你找到解决方法了吗?运行 python -c "作为 Git 的新默认终端的 MinTTY 终端根本不支持 Windows 控制台程序。我不知道为什么决定更改默认终端,但我知道一些解决此问题的方法:
-
编写一个 Bash 别名以使用 winpty 启动 python
Bash 别名(放入您的 .bashrc):
alias python=winpty py.exe
注意:从 Git for Windows 2.7.1 开始,Winpty 是开箱即用的。 winpty 安装在Git\usr\bin
。
-
如果没有参数,请编写一个 Bash 别名以交互模式启动 python:
Bash 别名(放入您的 .bashrc):
function maybe_py()
if [ $# -eq 0 ]; then
/c/Windows/py.exe -i
else
/c/Windows/py.exe $@
fi
alias python=maybe_py
-
以交互模式显式启动 python
请注意,使用箭头键浏览命令历史记录可能无法正常工作:
py -i
或者对于脚本:
py script.py
什么是 py.exe?
如果您想知道为什么我引用 C:\Windows\py.exe
而不是特定的 python.exe
安装,我想解释一下使用它的一些好处(Python Launcher for Windows:
要更改您的首选/系统安装(例如交互模式),请参阅this answer。
【讨论】:
对自己的评论:python -i
如果您尝试使用箭头键检索命令历史记录,则使用新的 git bash 控制台并不总是能正常工作。它似乎在输出中向上移动光标,就好像它是一个文本编辑器一样。
@Sushil 我刚刚研究并看到了更新here。 MinTTY 终端似乎不支持开箱即用的 windows 控制台程序,但如果您安装 Git For Windows 2.7.1 或更高版本,则可以使用开箱即用的 Winpty 运行 python。我已经适当地更新了答案。
仅供参考:当您的脚本使用 getpass.getpass()
时会出现同样的症状,而 python -i your_script.py
不会修复它,但 winpty python your_script.py
就像一个魅力。幸运的是,他们至少为最新版本的 Git For Windows 提供了开箱即用的 Winpty。
我认为您需要在别名周围加上引号,因为它包含一个空格。
为我工作:alias python="winpty python.exe"
【参考方案2】:
在安装 git for windows 时,选择使用 windows 默认控制台窗口,如picture 所示。 此选项允许您使用交互式 python 或 nodejs。 getpass 也适用于这个控制台。
【讨论】:
【参考方案3】:安装git for windows时,选择使用windows默认控制台窗口,如下图所示。 此选项允许您使用交互式 python 或 nodejs。 getpass 也适用于这个控制台。
enter image description here
【讨论】:
【参考方案4】:以@Darthfett 的回答为基础。我必须确保有引号,而不是引用 .exe 文件
所以最后在你的.bashrc
alias python='winpty python'
alias pip='winpty pip' # Rescue pip as well
然后就是全部了
Python
Tawanda@Tawanda-PC MINGW64 ~
$ alias python='winpty python'
Tawanda@Tawanda-PC MINGW64 ~
$ python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
点
Tawanda@Tawanda-PC MINGW64 ~
$ alias pip='winpty pip'
Tawanda@Tawanda-PC MINGW64 ~
$ pip -v
Usage:
pip <command> [options]
Commands:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
【讨论】:
【参考方案5】:感谢@darthfett 的answer,这在很大程度上解决了问题!
仅供参考:当您的脚本使用import getpass; getpass.getpass()
时,同样的症状也存在,在这种情况下python -i your_script.py
不会修复它,但winpty python your_script.py
仍然像一个魅力。 (幸运的是,他们至少为最新版本的 Git For Windows 提供了开箱即用的 Winpty。)
因此,要设置一次(每个虚拟环境)并忘记它,您可以将此行附加到 env/Script/activate
的末尾:
alias python='winpty python.exe'
它将在那个 bash 控制台中工作。 (不过,如果你碰巧是 vim 用户,当你在 vim 中执行 :python my_script.py
时,它仍然无法在 vim 中工作。)
【讨论】:
【参考方案6】:它正在尝试打开控制台以进行输出。除非您编译 python 或获得 mingw 的版本,否则您可能需要以下内容:
WinPty
【讨论】:
【参考方案7】:需要显式python交互模式:python -i
您可以在 .bashrc 中定义别名:alias python='python -i',但这样做,您将无法运行脚本文件(即:python script.py)。
在这里找到: Using Windows Python from Cygwin
【讨论】:
如果您尝试使用箭头键检索命令历史记录,则python -i
与新的 git bash 控制台并不总是能正常工作。它似乎在输出中向上移动光标,就好像它是一个文本编辑器一样。
是的,这是真的。很遗憾,但这是我发现解释器工作的唯一方法。
如果你运行winpty python
,那么你会得到带有箭头键的python控制台,^Z + Return
退出控制台【参考方案8】:
您可以通过编辑“$HOME/.bashrc”中的文件来配置 git bash 控制台
将此行添加到您的$HOME/.bashrc
export PATH=$PATH;c:/python34
【讨论】:
$HOME/.bashrc
默认不存在。创建它并添加该行,然后重新启动 Git Bash 并不能使其与 Python 一起使用。以上是关于Git 2.5.1 的 bash 控制台不打开 python 解释器的主要内容,如果未能解决你的问题,请参考以下文章