Python will not run in git bash (Windows). When I type python in the command line, it takes me to a blank line without saying that it has entered python 2.7.10 like its does in Powershell. It doesn’t give me an error message, but python just doesn’t run.
I have already made sure the environmental variables in PATH included c:\python27. What else can I check?
A session wherein this issue occurs looks like the following:
user@hostname MINGW64 ~
$ type python
python is /c/Python27/python
user@hostname MINGW64 ~
$ python
…sitting there without returning to the prompt.
回答 0
只需在Windows的git shell中输入- alias python='winpty python.exe',就可以了,您将拥有python可执行文件的别名。请享用
Just enter this in your git shell on windows – > alias python='winpty python.exe', that is all and you are going to have alias to the python executable. Enjoy
P.S. For permanent alias addition see below,
cd ~
touch .bashrc
then open .bashrc, add your command from above and save the file.
You need to create the file through the console or you cannot save it with the proper name. You also need to restart the shell to apply the change.
回答 1
我在答案列表中没有看到下一个选项,但可以通过“ -i”键获得交互式提示:
$ python -i
Python3.5.2(v3.5.2:4def2a2901a5,Jun252016,22:18:55)Type"help","copyright","credits"or"license"for more information.>>>
$ build/console.exe c:/Python27/python.exe
Python2.7.2(default,Jun122011,15:08:59)[MSC v.150032 bit (Intel)] on win32
Type"help","copyright","credits"or"license"for more information.>>>10+2030>>> exit()
To run a Windows console program in mintty or Cygwin sshd, prepend console.exe to the command-line:
$ 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()
The prebuilt binaries for msys are likely to work with Git Bash. (Do check whether there’s a newer version if significant time has passed since this answer was posted!).
As of Git for Windows 2.7.1, also try using winpty c:Python27/python.exe; WinPTY may be included out-of-the-box.
I am windows 10 user and I have installed GIT in my system by just accepting the defaults.
After reading the above answers, I got 2 solutions for my own and these 2 solutions perfectly works on GIT bash and facilitates me to execute Python statements on GIT bash.
I am attaching 3 images of my GIT bash terminal. 1st with problem and the latter 2 as solutions.
PROBLEM – Cursor is just waiting after hitting python command
SOLUTION 1
Execute winpty <path-to-python-installation-dir>/python.exe on GIT bash terminal.
Note: Do not use C:\Users\Admin like path style in GIT bash, instead use /C/Users/Admin.
In my case, I executed winpty /C/Users/SJV/Anaconda2/python.exe command on GIT bash
Or if you do not know your username then execute winpty /C/Users/$USERNAME/Anaconda2/python.exe
In addition to the answer of @Charles-Duffy, you can use winpty directly without installing/downloading anything extra. Just run winpty c:/Python27/python.exe. The utility winpty.exe can be found at Git\usr\bin. I’m using Git for Windows v2.7.1
The prebuilt binaries from @Charles-Duffy is version 0.1.1(according to the file name), while the included one is 0.2.2
alias python2='winpty C/Networking/"Network Automation"/"Python 2.7"/python.exe'
alias python='winpty C/Networking/"Network Automation"/"Python 3.7"/python.exe'
HI. This is (for me) the best solution to run both Python (Python 2.7 and Python 3.x) directly from Git Bash on Win 10 => adding aliases into the aliases file that Git Bash uses for.
Git Bash aliases file is aliases.sh. It is located in:
C:\path where you installed Git\etc\profile.d\aliases.sh
1) Open (with a text editor like Atom or other) the aliases.sh
for ex: in my case the file is inC:\Software\Develop\Git\etc\profile.d\aliases.sh
So you must create 2 aliases, one for Python 2 (I named python2) and the other for Python 3 (I named just python)
Git Bash uses linux file structure so you need to change the “\” for “/”
and if you have a path like my example Network Automation you put it with ” “
“Network Automation”, for ex.
winpty is the magic command that will call the executable.
So add these lines at the beginning of 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) Add or Modify other aliases (if you want)
I modified also the ll alias to show all the files and in a human readable list:
alias ll='ls -lah'
4) Save the aliases.sh file
5) OK!!! close and relaunch your Git Bash
Now, permanently you could launch both Python directly from Git shell just writting
$ python -> launch Python 3
$ python2 -> launch Python 2
$ ll -> enters a ls -lah to quickly show your detailed file list
gitbash has some issues when running any command that starts with python. this goes for any python manage.py commands as well. Always start with ‘winpty python manage.py’ At least this is what works for me. Running Windows 10.
I am using MINGW64 via Visual Studio Code on Windows 10 and trying to install node-sass (which requires python2). I followed felixrieseberg/windows-build-tools #56 on Github which solved my issue.
This is a special case, but I’m posting in case someone has the same problem:
For python version 3.7.3 in vscode with gitbash as the default terminal I was dealing with this for a while and then followed @Vitaliy Terziev advice of adding the alias to .bashrc but with the following specification:
alias python=’“/c/Users/my user name/AppData/Local/Programs/Python/Python37/python.exe”’
Notice the combination of single and double quotes because of “my user name” spaces.
For me, “winpty” couldn’t resolve python path in vscode.
Another example of this issue is using the AWS Elastic Beanstalk command line interface (awsebcli, eb cli) from the git bash (MINGW64, Mintty) in windows (using git version 2.19.0.windows.1).
I’m just posting this because it took me a while to end up here, searching for eb-cli specific issues.
Commands such as eb init or eb config save, which require user input, appear to cause a freeze/hang. In reality I guess the console is not updated with the text requesting user input. Moreover, eb deploy only updates the console text after the command has finished, so I don’t get to see progress updates until finished.
winpty eb <command> (instead of just eb <command>)
A alternative, as suggested in this git for windows issue, could be to use the windows native console instead of mintty (option during git installation).
The one worked for me is as mentioned earlier in these great answers above is the alias as follows:
(I’m using anaconda, so first find where is the python path, then add it into the alias on git bash).
1. on anaconda terminal I run: where python
2. on git bash I run: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"'
3. Done. Python is defined inside the git Bash using the alias.
Thanks to (Vitaliy Terziev & hygull) for their very helpful answers.
#!/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 bashif[-z "${@}"]; then
# empty args, use interactive mode/c/Users/%USERNAME%/.python/Python36/python.exe -i
else/c/Users/%USERNAME%/.python/Python36/python.exe ${@}
fi
python.exe -i works but got issues in exiting from the interactive mode by sending “^Z” (CTRL+Z). So, seem better to use winpty python.exe in Git Bash for Windows.
Use ~/bin directory to make a wrap/reference file (like ~/bin/python) which will be accessible everywhere (you may use different version reference like ~/bin/python37).
Code inside the file:
#!/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 ${@}
I just don’t like these “magic” aliases which you’re always forgetting where it’s coming from, and sometimes leads to issues in some cases.
Use ~/bin/python file and -i parameter:
#!/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