如果我在cmd中这样做,它就可以毫无问题地工作,但是如果我在gitbash中尝试它,它就不工作了。我喜欢使用Git-Bash作为我唯一的控制台,但是如果它不适用于Python3.4,我就不能这样做。
如下图所示。这很容易复制。卸载python和git(如果安装了它们),安装python 3.4,安装git 2.5.1,然后得到结果。
如何使Python解释器在Git-Bash中工作?
我也有同样的问题。你找到解决办法了吗?运行python-c""是有效的。这个问题似乎只与交互式shell有关
Mintty终端是Git的新默认终端,它不支持Windows控制台程序。我不知道为什么决定更改默认终端,但我知道一些解决方法:
编写bash别名以使用winpty启动python
bash别名(放入.bashrc中):
1alias python=winpty py.exe
注意:从Git for Windows 2.7.1开始,Winpty是开箱即用的。winpty安装在Git\usr\bin上。
如果没有参数,则编写bash别名以在交互模式下启动python:
bash别名(放入.bashrc中):
9function maybe_py() {
if [ $# -eq 0 ]; then
/c/Windows/py.exe -i
else
/c/Windows/py.exe $@
fi
}
alias python=maybe_py
以交互模式显式启动python
请注意,使用箭头键浏览命令历史记录可能无法正常工作:
1py -i
或脚本:
1py script.py
什么是PY.EXE?
如果您想知道我为什么引用C:\Windows\py.exe而不是特定的python.exe安装,我想解释一下使用它的一些好处(用于Windows的python启动程序:
它与更新的python(python 3.3+)安装在一起。
它理解并尝试在shebang行中使用指定的python安装。
它适用于虚拟环境(例如,shebang line for venv)
有关更改首选/系统安装(例如,对于交互模式),请参阅此答案。
对我自己说:如果您试图使用箭头键来检索命令历史记录,那么使用新Git-Bash控制台的python -i并不总是工作正常。它似乎在输出中向上移动光标,就好像它是一个文本编辑器。
有什么解决办法吗?
@Sushil我刚刚研究并看到了一个更新。mintty终端似乎不支持开箱即用的Windows控制台程序,但如果您安装了适用于Windows 2.7.1或更高版本的Git,则可以使用开箱即用的winpty来运行python。我已经适当地更新了答案。
仅供参考:当你的脚本使用getpass.getpass()时,同样的症状也会出现,python -i your_script.py不会修复它,但winpty python your_script.py的工作方式很有魅力。幸运的是,他们至少为Winpty提供了最新版本的Git for Windows。
我认为您需要在别名周围加引号,因为它包含一个空格。
为我工作:alias python="winpty python.exe"。
您需要显式的python交互模式:python-i
您可以在.bashrc:alias python='python-i'中定义别名,但这样,您将无法运行脚本文件(即:python script.py)。
在这里找到:从cygwin使用windows python
如果您试图使用箭头键来检索命令历史记录,那么使用新Git-Bash控制台的python -i并不总是工作正常。它似乎在输出中向上移动光标,就好像它是一个文本编辑器。
是的,这是真的。很遗憾,但这是我找到翻译工作的唯一方法。
以@darthfett的答案为基础。我必须确保有引号,而不是引用.exe文件
所以最后在你的电脑里
alias python='winpty python'
alias pip='winpty pip' # Rescue pip as well
那就一切都好了Python
8Tawanda@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()
匹普
16Tawanda@Tawanda-PC MINGW64 ~
$ alias pip='winpty pip'
Tawanda@Tawanda-PC MINGW64 ~
$ pip -v
Usage:
pip [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.
它正试图打开控制台进行输出。除非您编译python或获取mingw的版本,否则您可能需要如下内容:
温蒂
感谢@darthfett的回答,这在很大程度上解决了问题!
仅供参考:当您的脚本使用import getpass; getpass.getpass()时,同样的症状也存在,在这种情况下,python -i your_script.py不会修复它,但winpty python your_script.py仍然像一个魅力一样工作。(幸运的是,他们至少为Winpty提供了最新版本的Git for Windows。)
因此,要设置一次(每个虚拟环境)并忽略它,您可以在env/Script/activate的末尾附加此行:
1alias python='winpty python.exe'
它将在bash控制台中工作。(但是,如果您碰巧是一个VIM用户,那么当您在VIM中执行:python my_script.py操作时,它仍然无法在VIM中工作。)
安装Git for Windows时,选择使用Windows默认控制台窗口,如图所示。此选项允许您使用交互式python或nodejs。getpass也在这个控制台上工作。
安装Git for Windows时,选择使用Windows默认控制台窗口,如下图所示。此选项允许您使用交互式python或nodejs。getpass也在这个控制台上工作。
在此处输入图像描述
您可以通过在"$home/.bashrc"中编辑文件来配置git bash控制台。
将这一行添加到您的$HOME/.bashrc中
1export PATH=$PATH;c:/python34
默认情况下,$HOME/.bashrc不存在。创建它并添加该行,然后重新启动GitBash并不能使它与Python一起工作。