web-dev-qa-db-ja.com

Git 2.5.1のbashコンソールが開かないpythonインタープリター

CMDで実行すると問題なく動作しますが、Git Bashで実行すると動作しません。 Git Bashを唯一のコンソールとして使用したいのですが、Python 3.4。で動作しない場合はできません。

例は下の図にあります。これは簡単に再現できます。アンインストールPythonおよびGitがインストールされている場合、インストールPython 3.4、Git 2.5.1をインストールすると、その結果が得られます。

Console

Git BashでPythonインタープリターを動作させるにはどうすればよいですか?

30
Manu

Gitの新しいデフォルトターミナルであるMinTTYターミナルは、Windowsコンソールプログラムをサポートしていません。デフォルトの端末を変更する決定が下された理由はわかりませんが、これを回避するいくつかの方法を知っています。

  1. pythonを起動するBashエイリアスを記述します

Bashエイリアス(.bashrcに入力):

alias python=winpty py.exe

:Git for Windows 2.7.1の時点では、Winptyはそのまま使用できます。 winptyはGit\usr\binにインストールされています。


  1. 引数がない場合は、対話モードでpythonを起動するBashエイリアスを記述します。

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を参照している理由がわからない場合は、それを使用するいくつかの利点を説明したかった( Python Launcher for Windows

優先/システムインストールの変更(例:インタラクティブモード)については、 this answer を参照してください。

42
Casey Kuball

明示的にpythonインタラクティブモード:python -i

.bashrcでエイリアスを定義できます:alias python = 'python -i'しかし、これを行うと、スクリプトを実行できなくなりますファイル(例:python script.py)。

ここにあります: Windows Python)を使用

10
besil

@Darthfettの答えに基づいて。引用符があり、.exeファイルを参照していないことを確認する必要がありました

最後に.bashrc

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

それからすべての作品です

Python

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.
5
Dr Manhattan

出力用のコンソールを開こうとしています。 pythonをコンパイルするか、mingwのバージョンを取得しない限り、次のようなものが必要になる場合があります。

WinPty

3
andygavin

@darthfettの answer に感謝します。これにより、この問題が大幅に解決されます。

参考までに、スクリプトで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内では動作しません。)

2
RayLuo

Git for windowsをインストールする場合、下の図に示すように、windowsのデフォルトコンソールウィンドウを使用することを選択します。このオプションを使用すると、インタラクティブなpythonまたはnodejsを使用できます。getpassはこのコンソールでも機能します。

ここに画像の説明を入力

0
knaggita

Git for windowsをインストールする場合、 picture に示すように、windowsのデフォルトコンソールウィンドウを使用することを選択します。このオプションを使用すると、インタラクティブなpythonまたはnodejsを使用できます。getpassはこのコンソールでも機能します。

0
knaggita

「$ HOME/.bashrc」のファイルを編集して、git bashコンソールを構成できます。

この行を$HOME/.bashrcに追加します

export PATH=$PATH;c:/python34
0
edi9999