Python无法在git bash的命令行中运行

时间:2015-09-15 23:18:08

标签: python windows git command-line git-bash

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

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

20 个答案:

答案 0 :(得分:246)

只需在windows上的git shell中输入它 - > alias python='winpty python.exe',就是这样,你将拥有python可执行文件的别名。享受

P.S。对于永久别名添加,请参见下文,

cd ~
touch .bashrc

然后打开.bashrc,从上面添加命令并保存文件。 您需要通过控制台创建文件,或者无法使用正确的名称保存文件。您还需要重新启动shell以应用更改。

答案 1 :(得分:56)

我没有在答案列表中看到下一个选项,但我可以使用“-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.
>>> 

答案 2 :(得分:52)

This is a known bug in MSys2, which provides the terminal used by 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()

prebuilt binaries for msys可能适用于Git Bash。 (如果自该答案发布以来已经过了很长时间,请检查是否有更新的版本!)。

从Git for Windows 2.7.1开始,也尝试使用winpty c:Python27/python.exe; WinPTY可以包含在开箱即用中。

答案 3 :(得分:34)

我是Windows 10用户,只是接受默认设置,我在系统中安装了 GIT

在阅读了上述答案之后,我得到了2个自己的解决方案,这2个解决方案完全适用于 GIT bash,并帮助我在 GIT bash上执行Python语句。

我附上了我的 GIT bash终端的3张图片。第1个问题,后2个解决方案。

问题 - 点击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

感谢。

答案 4 :(得分:7)

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

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

答案 5 :(得分:7)

2个解决方法,而不是一个解决方案:在我的Git Bash中,以下命令挂起,并且我没有得到提示:

for

所以我只用:

const fetch = require('node-fetch')
const fetchlink = async (i) => {
    let url = `http://linktofetch`
    let response = await fetch(url, {
        method: 'GET'
    })
    const answer = await response.json()
    return answer
}
const arr = []
let pushtoarr = async (value) => {
    arr.push(value)
}
let main = async () => {
    for(let i=1;i < 10; i++){
        const answer = fetchlink(i).then((response) => {
            response.data.items.forEach(el =>{
                pushtoarr(el.name)
            }
        )
    })
    }
    console.log(arr)
}
main()

如上所述,您也可以使用:

% python

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

请参阅附件的会话。enter image description here

答案 6 :(得分:1)

除@Vitaliy Terziev回答

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

答案 7 :(得分:1)

您可以从以下位置更改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)的方式。最新版本正常启动,它是我如何到达那里的......

答案 8 :(得分:1)

键入:&#39; winpty python&#39;它会起作用

运行任何以python开头的命令时,gitbash存在一些问题。这适用于任何python manage.py命令。始终以&#39; winpty python manage.py&#39;开头。至少这对我有用。运行Windows 10.

答案 9 :(得分:1)

我正在通过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

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

答案 10 :(得分:1)

键入命令PY而不是Python。调用口译员 (python.org)。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

以某种方式,我还安装了几个不同的2.7x版本的Python。我删除了每个版本的Python(3x和2x),下载了官方安装程序here,重新安装了3.8.5(仅使用默认值),并在以下位置安装了Python 3.8.5:

C:\ Users \(我的用户名)\ AppData \ Local \ Programs \ Python \ Python38

然后要使命令python在我的git bash shell中工作,我必须按照列出的here手动将Python38的路径添加到我的path变量中。请务必注意这一点,因为在出​​现的第一个模式底部的python安装程序中,它询问您是否要将python路径添加到您的PATH环境变量中。我单击了它旁边的复选框,但实际上并没有添加路径,因此需要手动将路径添加到我的PATH环境变量中。

现在使用gitbash shell,我可以浏览到其中带有python脚本的目录,只需键入python theScriptName.py,它就不会出现问题。

我想发布此内容,因为这是获取gitbash shell允许我运行python脚本的全部工作。我认为可能已经进行了一些更新,因此我不需要执行此处列出的任何其他解决方案。无论如何,如果您在Windows 10计算机上的gitbash shell中运行python脚本时遇到问题,这是另一种尝试。

享受。

答案 13 :(得分:0)

  1. #include <iostream> #include <string> using namespace std; //for sample purposes int main() { string content = "this is original. \"this is original\""; cout << "Original: " << content << endl; while (content.find("original") != std::string::npos) if(content.find('"')) break; content.replace(content.find("original"), 8, "replacement"); cout << "Replaced: " << content; return 0; } 可以工作,但是在发送“ ^ Z”(CTRL + Z)退出交互模式时遇到了问题。因此,在Windows的Git Bash中使用python.exe -i似乎更好。

  2. 使用winpty python.exe目录制作环绕/引用文件(例如~/bin),该文件可以在任何地方访问(您可以使用类似~/bin/python的不同版本引用)。
    文件中的代码:

~/bin/python37

我只是不喜欢这些“魔术”别名,您总是会忘记它们的来源,有时在某些情况下会导致问题。

  1. 使用#!/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 ${@} 文件和~/bin/python参数:
-i

答案 14 :(得分:0)

为我工作的一个人在上面的这些好答案中如前所述,是别名,如下所示: (我正在使用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)的非常有益的回答。

答案 15 :(得分:0)

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

答案 16 :(得分:0)

Git Bash解决方法-使用别名启动Python 2和Python 3

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

  

Git Bash别名文件 aliases.sh 它位于:

     

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

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

例如:就我而言,文件位于 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

因此,您必须创建2个别名,一个用于Python 2 我命名为 python2 ),另一个用于Python 3 < / strong>(我仅命名为 python ) Git Bash使用linux文件结构,因此您需要将“ /” 更改为“ \” 并且如果您有类似我的示例 Network Automation 的路径,请使用“”

“网络自动化” ,例如

winpty是将调用可执行文件的魔术命令。

因此,请将这些行添加到 aliases.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)添加或修改其他别名(如果需要)

我还修改了 ll 别名,以显示所有文件并显示在人类可读的列表中:

alias ll='ls -lah'

4)保存aliases.sh文件


5)好!!!关闭并重新启动您的Git Bash

现在,永久性地,您可以直接从Git shell编写直接启动两个Python

$ python->启动Python 3

$ python2->启动Python 2

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

  

干杯,哈里

答案 17 :(得分:0)

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

alias python =”“ / c / Users /我的用户名/AppData/Local/Programs/Python/Python37/python.exe””

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

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

答案 18 :(得分:0)

此问题的另一个示例是在Windows的git bash(MINGW64,Mintty)中使用AWS Elastic Beanstalk命令行界面(awsebcli,eb cli)(使用git版本2.19.0.windows.1)。

我之所以发布,是因为我花了一段时间才找到这里的eb-cli特定问题。

需要用户输入的eb initeb config save之类的命令出现会导致冻结/挂起。实际上,我想控制台不会使用请求用户输入的文本进行更新。此外,eb deploy仅在命令完成后才更新控制台文本,因此直到完成后我才能看到进度更新。

git for windows release notes(适用于v2.19.0)中所述,例如在Xun Yang's answer中,一种解决方法是运行

winpty eb <command>(而不只是eb <command>

git for windows issue中建议的一种替代方法是使用Windows本机控制台而不是mintty(在git安装过程中选择)。

答案 19 :(得分:-1)

看看这个答案:

Git Bash won't run my python files?

Git Bash中的路径应该设置如下:

PATH=$PATH:/c/Python27/