如果我在cmd中这样做,它就可以毫无问题地工作,但是如果我在gitbash中尝试它,它就不工作了。我喜欢使用Git-Bash作为我唯一的控制台,但是如果它不适用于Python3.4,我就不能这样做。

如下图所示。这很容易复制。卸载python和git(如果安装了它们),安装python 3.4,安装git 2.5.1,然后得到结果。

nJV5U.png

如何使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中):

1

2

3

4

5

6

7

8

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

1

2

3

4

5

6

7

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()

匹普

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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一起工作。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐