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
......坐在那里而不回到提示。
答案 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
命令后光标正在等待
解决方案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
解决方案2
只需输入python -i
即可。
感谢。
答案 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
答案 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)
#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
似乎更好。
使用winpty python.exe
目录制作环绕/引用文件(例如~/bin
),该文件可以在任何地方访问(您可以使用类似~/bin/python
的不同版本引用)。
文件中的代码:
~/bin/python37
我只是不喜欢这些“魔术”别名,您总是会忘记它们的来源,有时在某些情况下会导致问题。
#!/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)
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
例如:就我而言,文件位于 C:\Software\Develop\Git\etc\profile.d\aliases.sh
在我的情况下 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'
我还修改了 ll 别名,以显示所有文件并显示在人类可读的列表中:
alias ll='ls -lah'
现在,永久性地,您可以直接从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 init
或eb 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)