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
...坐在那里没有返回提示。
python -i
解决了它。
临时解决方案
只需在 Windows 上的 git shell 中输入 - > alias python='winpty python.exe'
,就是这样,您将拥有 python 可执行文件的别名。此别名将在 shell 会话期间有效。
winpty 是一个 Windows 软件包,提供类似于 Unix pty-master 的接口,用于与 Windows 控制台程序进行通信。
永久解决方案
将命令添加到用户主目录中的 .bashrc
。您可以使用 CLI 或文本编辑器:
使用命令行
这可以通过 git bash 来完成,如下所示:
echo "alias python='winpty python.exe'" >> ~/.bashrc
如果文件不存在,它将在当前用户主目录中创建 .bashrc
,如果存在,则将别名附加到 .bashrc
的末尾。
使用文本编辑器
或者,您可以先创建一个 .bashrc
。根据您的文件管理器,这可能更容易在 git bash 中完成,如下所示:
cd ~
touch .bashrc
此时,您可以在首选文本编辑器中打开 .bashrc
并将其添加到那里。
要应用更改,请使用命令 source .bashrc
或重新启动 shell。
我在答案列表中看不到下一个选项,但我可以使用“-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.
>>>
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(默认,2011 年 6 月 12 日,15:08 :59) [MSC v.1500 32 位 (Intel)] 在 win32 上键入“帮助”、“版权”、“信用”或“许可证”以获取更多信息。 >>> 10 + 20 30 >>> 退出()
prebuilt binaries for msys 可能与 Git Bash 一起使用。 (如果自发布此答案以来已经过了很长时间,请检查是否有更新的版本!)。
从 Git for Windows 2.7.1 开始,也可以尝试使用 winpty c:Python27/python.exe
; WinPTY 可以开箱即用。
build/console.exe c:/Python27/python.exe
- 这应该在 GitMsys 控制台中运行还是以任何其他方式运行?
build
是 console.exe
所在的目录;根据您实际安装它的位置/方式适当地更新路径。
console.exe
- 没有出现。这是要额外安装的东西吗?
winpty c:/Python27/python.exe
,而无需执行任何其他操作。实用程序 winpty.exe 可以在 Git\usr\bin 中找到。我正在使用适用于 Windows v2.7.1 的 Git
我是 Windows 10 用户,我通过接受默认设置在我的系统中安装了 GIT。
阅读上述答案后,我得到了 2 个自己的解决方案,这 2 个解决方案在 GIT bash 上完美运行,并方便我在 GIT bash 上执行 Python 语句。
我附上了我的 GIT bash 终端的 3 张图像。第一个有问题,后两个作为解决方案。
问题 - 光标在点击 python
命令后正在等待
https://i.stack.imgur.com/CbxRl.png
解决方案 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
https://i.stack.imgur.com/IzvlA.png
解决方案 2
只需输入 python -i
即可。
https://i.stack.imgur.com/3mwby.png
谢谢。
试试 python -i
而不是 python
,这是一个光标。
Git Bash 解决方法 - 使用别名启动 Python 2 和 Python 3
你好。这是(对我而言)直接从 Win 10 上的 Git Bash 运行 Python(Python 2.7 和 Python 3.x)的最佳解决方案 => 将别名添加到 Git Bash 用于的别名文件中。
Git Bash 别名文件是 aliases.sh。它位于:安装 Git\etc\profile.d\aliases.sh 的 C:\path
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(我只命名为 python) Git Bash 使用 linux 文件结构,因此您需要将“\”更改为“/”,如果您有一个像我的示例网络自动化这样的路径,你把它放在“”
“网络自动化”,例如。
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 以快速显示您的详细文件列表
干杯,哈利
除了@Charles-Duffy 的回答,你可以直接使用winpty,无需安装/下载任何额外的东西。只需运行 winpty c:/Python27/python.exe
。实用程序 winpty.exe 可以在 Git\usr\bin 中找到。我正在使用适用于 Windows v2.7.1 的 Git
@Charles-Duffy 的预构建二进制文件是 0.1.1 版本(根据文件名),而包含的二进制文件是 0.2.2
2个变通方法,而不是解决方案:在我的 Git Bash 中,以下命令挂起并且我没有得到提示:
% python
所以我只是使用:
% winpty python
正如上面某些人所指出的,您还可以使用:
% python -i
https://i.stack.imgur.com/XQMZJ.png
https://i.stack.imgur.com/4BpfI.jpg
类型:'winpty python',它会工作
gitbash 在运行任何以 python 开头的命令时都会出现一些问题。这也适用于任何 python manage.py 命令。总是从'winpty python manage.py'开始至少这对我有用。运行 Windows 10。
您可以从以下位置更改 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)的方式。最近的版本正常启动,这就是我到达那里的方式......
-l
:使 bash 就像作为登录 shell 被调用一样,-i
:如果存在 -i 选项,则 shell 是交互式的
除了@Vitaliy Terziev 回答
尝试 touch .bash_profile
,然后将别名添加到文件中。
我在 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
。
对于以 gitbash 作为默认终端的 vscode 中的 python 版本 3.7.3,我处理了一段时间,然后按照@Vitaliy Terziev 的建议将别名添加到 .bashrc 但具有以下规范:
别名python='“/c/Users/我的用户名/AppData/Local/Programs/Python/Python37/python.exe”'
由于“我的用户名”空格,请注意单引号和双引号的组合。
对我来说,“winpty”无法解析 vscode 中的 python 路径。
键入命令 PY 而不是 Python。调用解释器 (python.org)。
此问题的另一个示例是使用 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 安装期间的选项)。
对我有用的一个是前面这些很好的答案中提到的别名如下:(我使用的是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) 提供了非常有帮助的答案。
python.exe -i 有效,但通过发送“^Z”(CTRL+Z)退出交互模式时出现问题。因此,在适用于 Windows 的 Git Bash 中使用 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 参数:
#!/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
19480756 [sig] bash 2740! sigpacket::process: Suppressing signal 18 to win32 process (pid 14820)
— 发送 ^Z
后以 python.exe -i
运行的交互模式的响应示例
我知道这是一篇旧文章,但我刚刚在运行 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
的路径添加到我的路径变量中。这一点很重要,因为在出现的第一个模式底部的 python 安装程序中,它会询问您是否要将 python 路径添加到 PATH
环境变量。我点击了旁边的复选框,但它实际上并没有添加路径,因此需要手动将路径添加到我的 PATH
环境变量。
现在使用我的 gitbash shell,我可以浏览到一个包含 python 脚本的目录,然后输入 python theScriptName.py
,它运行没有问题。
我想发布这个,因为这是我必须做的所有事情才能让我的 gitbash shell 允许我运行 python 脚本。我认为可能有一些更新,所以我不需要执行此处列出的任何其他解决方案。无论如何,如果您在 Windows 10 机器上的 gitbash shell 中运行 python 脚本时遇到问题,这是另一回事。
享受。
如果您运行 Windows PowerShell 命令并发生错误,则错误记录将附加到名为 $error
的“自动变量”中。
您可以在同一个 PowerShell 会话中使用 $error
变量来查找错误。
$Error
变量包含信息集合,这就是使用 $Error[0]
可以获取错误消息对象的原因。此外,$Error[0]
变量将保存遇到的最后一条错误消息,直到 PowerShell 会话结束。
看看这个答案:
Git Bash won't run my python files?
Git Bash 中的路径应该这样设置:
PATH=$PATH:/c/Python27/
quit()
才能退出解释器。^Z
(ctrl-Z) +return
退出。alias python='winpty /c/Python27/python.exe'
source .bashrc
而不是重新启动 shell。