git bash命令行中Python无法工作

Python将无法在git bash (Windows)中运行。当我在命令行中输入python时,它会把我带到一个空行,而不会像在Powershell中那样说它已经输入了python 2.7.10。它没有给我一个错误消息,但python就是不运行。

我已经确保PATH中的环境变量包括c:\python27。我还能检查什么?


发生此问题的会话如下所示:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python


user@hostname MINGW64 ~
$ python

...坐在那里,不回到提示。

239925 次浏览

这是MSys2中的一个已知错误,MSys2提供了Git Bash使用的终端。你可以通过运行一个不支持ncurses的Python版本来解决这个问题,或者使用WinPTY,使用方法如下:

要在mintty或Cygwin sshd中运行Windows控制台程序,将console.exe前置到命令行:

$ build/console.exe c:/Python27/python.exe
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 + 20
30
>>> exit()

msys的预构建二进制文件可能与Git Bash一起工作。(如果这个答案已经发布了很长一段时间,请检查是否有更新的版本!)


对于Git for Windows 2.7.1,也可以尝试使用winpty c:Python27/python.exe;WinPTY可能包括开箱即用。

除了@Charles-Duffy的答案,你可以直接使用winpty,而不需要安装/下载任何额外的东西。只需运行winpty c:/Python27/python.exe。winpty.exe工具可以在Git\usr\bin中找到。我使用的是Git for Windows v2.7.1

@Charles-Duffy预构建的二进制文件是0.1.1版本(根据文件名),而包含的是0.2.2版本

临时解决方案

在windows上的git shell中输入这个- >alias python='winpty python.exe',这就是所有的,你将有python可执行文件的别名。这个别名在shell会话期间有效。

winpty是一个Windows软件包,提供类似于Unix pty-master的接口,用于与Windows控制台程序通信。

永久的解决方案

将该命令添加到用户主目录中的.bashrc。可以使用CLI或文本编辑器:

使用CLI

这可以从git bash中完成,如下所示:

echo "alias python='winpty python.exe'" >> ~/.bashrc

如果该文件不存在,则会在当前用户的主目录中创建.bashrc;如果存在,则会将别名追加到.bashrc的末尾。

使用文本编辑器

或者,你可以先创建一个.bashrc。取决于你的文件管理器,这可能更容易在git bash中完成,如下所示:

cd ~
touch .bashrc

这时,你可以在你首选的文本编辑器中打开.bashrc并将它添加到那里。

要应用更改,可以使用命令source .bashrc或重新启动shell。

更新

新版本的Git不再使用.bashrc,而是使用.bash_profile。Conda在初始化时也使用这个配置文件,因此请确保不要覆盖或删除初始化块。更多信息见这里:Git for Windows不执行我的.bashrc文件

我在答案列表中看不到下一个选项,但我可以使用“-i”键获得交互式提示:

$ python -i
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55)
Type "help", "copyright", "credits" or "license" for more information.
>>>

除了@Vitaliy Terziev的回答

尝试touch .bash_profile,然后在文件中添加别名。

您可以更改目标为Git Bash快捷方式从:

"C:\Program Files\Git\git-bash.exe" --cd-to-home

"C:\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i

这是ConEmu用来启动git bash的方式(版本16)。最近的版本正常启动,这就是我如何到达那里…

输入:'winpty python',它将工作

在运行任何以python开头的命令时,git会出现一些问题。这也适用于任何python manage.py命令。总是以“winpty python manage.py”开头,至少这对我来说是有效的。运行Windows 10。

我是windows 10用户,我已经通过接受默认值在我的系统中安装了GIT

在阅读了上面的答案后,我得到了我自己的2个解决方案,这2个解决方案完美地工作在GIT bash上,并便于我在GIT bash上执行Python语句。

我附加了我的GIT bash终端的3个图像。第一个是问题,后两个是解决方案。

问题 -光标只是在点击python命令后等待

enter image description here

解决方案1

GIT bash终端上执行winpty <path-to-python-installation-dir>/python.exe

注意:不要在GIT bash中使用类似C:\Users\Admin的路径样式,而是使用/C/Users/Admin

在我的例子中,我在GIT bash上执行了winpty /C/Users/SJV/Anaconda2/python.exe命令

或者如果你不知道你的用户名,那么执行winpty /C/Users/$USERNAME/Anaconda2/python.exe

enter image description here

解决方案2

只要输入python -i就行了。

enter image description here

谢谢。

我在Windows 10上通过Visual Studio Code使用MINGW64,并试图安装node-sass(这需要python2)。我在Github上遵循felixrieseberg / windows-build-tools # 56解决了我的问题。

这是一个特殊的情况,但我张贴以防有人有同样的问题:

npm——add-python-to-path='true'——debug install——global windows-build-tools < /代码> < / p >

这将python和其他所需的构建工具安装到%USERPROFILE%\.windows-build-tools\python27

这个问题的另一个例子是在windows(使用git版本2.19.0.windows.1)中从git bash (MINGW64, Mintty)使用AWS Elastic Beanstalk命令行界面(awsebcli, ebcli)。

我只是发布这个,因为我花了一段时间来结束这里,搜索eb-cli特定的问题。

诸如eb initeb config save之类的命令需要用户输入,出现会导致冻结/挂起。实际上,我猜控制台并没有更新请求用户输入的文本。此外,eb deploy只在命令完成后更新控制台文本,所以直到完成我才看到进度更新。

正如在Git for Windows发行说明(对于v2.19.0)中提到的,例如在荀杨的回答中,一个变通方法是运行

winpty eb <command>(而不仅仅是eb <command>)

另一种选择,正如Git for Windows发布中所建议的,可以使用windows本机控制台而不是mintty (git安装期间的选项)。

对于vscode中的python 3.7.3版本,gitbash作为默认终端,我处理了一段时间,然后遵循@Vitaliy Terziev的建议,将别名添加到.bashrc,但使用以下规范:

alias python= ' " /c/Users/我的用户名/AppData/Local/Programs/ python /Python37/python.exe " '

注意单引号和双引号的组合,因为“我的用户名”空格。

对我来说,“winpty”无法在vscode中解析python路径。

Git Bash Workaround- 启动Python 2 &带有别名的Python 3

。这是(对我来说)运行Python (Python 2.7和Python 3.x)的最佳解决方案,直接从Git Bash在Win 10 =>上添加别名到Git Bash使用的别名文件中。

Git Bash别名文件< em > aliases.sh < / em >它位于:

C:\path where you installed Git\etc\profile.d\aliases.sh

1)打开aliases.sh(使用Atom等文本编辑器)

例如:在我的情况下文件在 C:\Software\Develop\Git\etc\profile.d\aliases.sh

2)添加Python的别名

在我的情况下python.exe安装在:

C:\Networking\Network Automation\Python 2.7\python.exe
C:\Networking\Network Automation\Python 3.7\python.exe
< p >所以你必须创建2个别名,一个用于Python 2 (我命名为python2 < / >强)和另一个是Python 3 (我命名为python < / >强) Git Bash使用linux文件结构,因此您需要更改“\”“/” 如果你有一个像我的例子网络自动化这样的路径,你可以把它放在”“

“网络自动化”, 前女友。

Winpty是调用可执行文件的神奇命令。

因此,在alias .sh开头添加这些行

alias python2='winpty C/Networking/"Network Automation"/"Python 2.7"/python.exe'
alias python='winpty C/Networking/"Network Automation"/"Python 3.7"/python.exe'

3)添加或修改其他别名(如果需要)

我还修改了< em >对< / em >别名,以显示所有文件,并在一个人类可读的列表中:

alias ll='ls -lah'

4)保存alias .sh文件


< em > 5)好吧! !关闭并重新启动Git Bash

现在,你可以直接从Git shell中启动这两个Python

$ python ->启动Python 3

$ python2 ->启动Python 2

$ ll ->输入ls -lah来快速显示你的详细文件列表

< em >欢呼,哈利< / em >

尝试python -i而不是python,这是一个游标。

对我有用的是前面提到的这些伟大的答案是别名如下: (我使用anaconda,所以首先找到python路径的位置,然后将其添加到git bash的别名中)。 1. 在anaconda终端上运行:where python 2. 在git bash上运行:alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3.完成了。Python是在git Bash中使用别名定义的

感谢Vitaliy Terziev &Hygull)非常有用的答案。

  1. python.exe -i工作,但在发送“^Z”(CTRL+Z)退出交互模式时出现问题。因此,在Git Bash for Windows中使用winpty python.exe似乎更好

  2. 使用~/bin目录创建一个包装/引用文件(如~/bin/python),该文件可以在任何地方访问(你可以使用不同版本的引用,如~/bin/python37)。< br > 文件中的代码:

#!/usr/bin/env bash
# maybe declare env vars here like
# export PYTHONHOME=/c/Users/%USERNAME%/.python/Python36
# export PATH="${PATH}:/c/Users/%USERNAME%/.python/Python36"


# replace %USERNAME%,
# or use "~" instead of "/c/Users/%USERNAME%" if it works
winpty /c/Users/%USERNAME%/.python/Python36/python.exe ${@}

我只是不喜欢这些“神奇”的别名,你总是忘记它是从哪里来的,有时在某些情况下会导致问题

  1. 使用~/bin/python文件和-i参数:
#!/usr/bin/env bash
if [ -z "${@}" ]; then
# empty args, use interactive mode
/c/Users/%USERNAME%/.python/Python36/python.exe -i
else
/c/Users/%USERNAME%/.python/Python36/python.exe ${@}
fi

在我的Git Bash中,以下命令挂起,我没有得到提示:

% python

所以我只用:

% winpty python

如上所述,你还可以使用:

% python -i

2020-07-14: Git 2.27.0增加了对伪控制台的可选实验性支持,允许从命令行运行Python: enter image description here < / p >

见所附session.enter image description here

输入PY命令而不是Python命令。调用解释器 (python.org) . < / p >

我知道这是一个老帖子,但我刚刚在运行Python 3.8.5和Git 2.28.0.windows.1的Windows 10上遇到了这个问题

不知何故,我还安装了几个不同的2.7x版本的Python。我删除了Python的所有版本(3x和2x),下载了官方安装程序在这里,安装了3.8.5 fresh(只是使用默认值),在这个位置安装了Python 3.8.5:

C:\Users\(用户名)\ AppData \本地Python \程序\ \ Python38

然后,为了让命令python在我的git bash shell中工作,我必须手动将Python38的路径添加到我的路径变量中,遵循在这里列出的说明。注意这一点很重要,因为在出现的第一个模式底部的python安装程序中,它会询问你是否想将python路径添加到你的PATH环境变量中。我单击了旁边的复选框,但它实际上并没有添加路径,因此需要手动将路径添加到我的PATH环境变量中。

现在使用我的gitbash shell,我可以浏览到一个目录,其中有一个python脚本,只需键入python theScriptName.py,它运行没有问题。

我想发布这个,因为这是我所要做的,让我的git shell允许我运行python脚本。我想可能有一些更新,所以我不需要做这里列出的任何其他解决方案。无论如何,如果在Windows 10机器上运行gitbash shell中的python脚本遇到问题,这是另一件可以尝试的事情。

享受。

如果你运行Windows PowerShell命令并发生错误,错误记录将被追加到名为$error的“自动变量”中。

你可以在同一个PowerShell会话中使用$error变量来查找错误。

$Error变量保存了一组信息,这就是为什么使用$Error[0]可以获得错误消息对象的原因。此外,$Error[0]变量将保存遇到的最后一个错误消息,直到PowerShell会话结束。