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
...坐在那里,不回到提示。
我是windows 10用户,我已经在我的系统中安装了GIT,只是接受默认设置。
在阅读了上面的答案后,我得到了我自己的2个解决方案,这2个解决方案在GIT bash上完美地工作,并方便我在GIT bash上执行Python语句。
我附加了我的GIT bash终端的3个图像。第一个是问题,后两个是解决方案。
问题-光标只是等待击中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就行了。
谢谢。
Git Bash Workaround-启动带有别名的Python 2和Python 3
嗨。这是(对我来说)运行Python (Python 2.7和Python 3.x)的最佳解决方案,直接从Git Bash在Win 10 =>上添加别名到Git Bash使用的别名文件中。
Git Bash别名文件是alias .sh。它位于:
C:安装Git\etc\profile.d\alias .sh的路径
1)打开aliases.sh(使用Atom等文本编辑器)
例如:在我的例子中,文件在C:\Software\Develop\Git\etc\profile.d\alias .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文件结构,所以你需要将“\”改为“/”
如果你有一个像我举的Network Automation这样的路径,你可以用" "
例如,“网络自动化”。
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)添加或修改其他别名(如果需要)
我还修改了ll别名,以显示所有文件,并在一个人类可读的列表中:
alias ll='ls -lah'
4)保存alias .sh文件
5)好吧! !关闭并重新启动Git Bash
现在,你可以直接从Git shell中启动这两个Python
$ python ->启动python
$ python2 ->启动Python 2
$ ll ->输入ls -lah快速显示您的详细文件列表
干杯,哈利
临时解决方案
只需在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并将其添加到其中。
要应用更改,可以使用命令源.bashrc或重新启动shell。
更新
新版本的Git不再使用.bashrc,而是使用.bash_profile。Conda在初始化时也使用这个配置文件,因此请确保不要覆盖或删除初始化块。在这里查看更多:Git for Windows不执行我的.bashrc文件。
python.exe -i工作,但通过发送“^Z”(CTRL+Z)退出交互模式时出现问题。因此,在Git Bash for Windows中使用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