簡體   English   中英

Git 2.5.1的bash控制台無法打開python解釋器

[英]Git 2.5.1's bash console doesn't open python interpreter

如果我在CMD中這樣做,它可以正常工作,但如果我在Git Bash中嘗試它,它不起作用。 我喜歡使用Git Bash作為我唯一的控制台,但如果它不適用於Python 3.4,我就不能這樣做。

示例如下圖所示。 這可以很容易地再現。 卸載Python和Git(如果已安裝),安裝Python 3.4,安裝Git 2.5.1並獲得該結果。

安慰

如何讓Python解釋器在Git Bash中運行?

MinTTY終端是Git的新默認終端,它不支持Windows控制台程序。 我不知道為什么決定更改默認終端,但我知道有幾種方法可以解決這個問題:

  1. 寫一個Bash別名來用winpty啟動python

Bash別名(放在你的.bashrc中):

alias python=winpty py.exe

注意 :從Git for Windows 2.7.1開始,Winpty開箱即用。 可以在Git\\usr\\bin找到winpty。


  1. 如果沒有參數,寫一個Bash別名以交互模式啟動python:

Bash別名(放在你的.bashrc中):

function maybe_py() {
    if [ $# -eq 0 ]; then
        /c/Windows/py.exe -i
    else
       /c/Windows/py.exe $@
    fi
}

alias python=maybe_py

  1. 以交互模式顯式啟動python

請注意,使用箭頭鍵瀏覽命令歷史記錄可能無法正常工作:

py -i

或者對於腳本:

py script.py

什么是py.exe?

如果您想知道為什么我引用C:\\Windows\\py.exe而不是特定的python.exe安裝,我想解釋一下使用它的一些好處( 適用於WindowsPython啟動器

要更改首選/系統安裝(例如,用於交互模式),請參閱此答案

你需要顯式的python交互模式: python -i

您可以在.bashrc中定義別名: 別名python ='python -i' ,但是這樣做,您將無法運行腳本文件(即: python script.py )。

在這里找到: 使用Cygwin的Windows Python

建立@ Darthfett的答案。 我必須確保有引號,而不是引用.exe文件

所以最后你的.bashrc

alias python='winpty python' alias pip='winpty pip' # Rescue pip as well

一切都是有效的

蟒蛇

Tawanda@Tawanda-PC MINGW64 ~
$ alias python='winpty python'

Tawanda@Tawanda-PC MINGW64 ~
$ python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

果仁

Tawanda@Tawanda-PC MINGW64 ~
$ alias pip='winpty pip'

Tawanda@Tawanda-PC MINGW64 ~
$ pip -v

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.

它試圖打開控制台輸出。 除非您編譯python或獲取mingw的版本,否則您可能需要以下內容:

WinPty

感謝@darthfett的回答 ,這在很大程度上解決了這個問題!

僅供參考:當您的腳本使用import getpass; getpass.getpass()時,也存在相同的症狀import getpass; getpass.getpass() import getpass; getpass.getpass() ,在這種情況下python -i your_script.py不會修復它,但winpty python your_script.py仍然像魅力一樣。 (幸運的是,他們至少在最新版本的Git For Windows中提供了Winpty。)

因此,要設置一次(每個虛擬環境)並忘記它,您可以在env/Script/activate的末尾附加此行:

alias python='winpty python.exe'

它將在該bash控制台中工作。 (但是,如果你碰巧是一個vim用戶,當你這樣做時,它仍然無法在vim中運行:python my_script.py在vim中使用:python my_script.py 。)

您可以通過編輯“$ HOME / .bashrc”中的文件來配置git bash控制台

將此行添加到$HOME/.bashrc

export PATH=$PATH;c:/python34

在為Windows安裝git時,選擇使用Windows默認控制台窗口,如下圖所示。 此選項允許您使用交互式python或nodejs。 getpass也適用於此控制台。

在此輸入圖像描述

當安裝Windows的混帳,選擇使用Windows默認的控制台窗口,如圖所示畫面 此選項允許您使用交互式python或nodejs。 getpass也適用於此控制台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM