Pythonがgit bashのコマンドラインで機能しない


236

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

...プロンプトに戻らずにそこに座っています。


2
"何も起こりません"?エラーが発生しませんか?(どちらを言うか:エラーメッセージが表示された場合、それは質問の一部です)
Charles Duffy

@ recursive、bashは確かにPATHを尊重します。(ただし、その変数の独自のバージョンがあります)。
Charles Duffy

11
Pythonで入力してもエラーメッセージは表示されません。空行が表示されるだけですが、Pythonが実際に実行されていることは示されていません
Caroline Morris

4
@CharlesDuff、彼女はそれを明確にしました、チャールズ、エラーメッセージはありませんでした。Bashがフリーズするだけです。端末のフリーズはエラーメッセージです。
Green

1
@Green、私の答えから明らかなはずですが、それはもはや明確さを欠いている点ではありません-そして1年のほとんどの部分のためにされていません。さらに、このスレッドの前のOPのコメントの後にある点を明確にするために編集するまで、この点に関しては質問が明確ではありませんでした。履歴を確認してください。
Charles Duffy

回答:


361

これをWindowsのgitシェルに入力するだけです-> alias python='winpty python.exe'、これですべてで、Python実行可能ファイルのエイリアスが作成されます。楽しい

PS恒久的なエイリアスの追加については、以下を参照してください、

cd ~
touch .bashrc

次に.bashrcを開き、上からコマンドを追加してファイルを保存します。コンソールからファイルを作成する必要があります。そうしないと、適切な名前でファイルを保存できません。変更を適用するには、シェルを再起動する必要もあります。


17
魅力のように機能します。
Green

4
注:quit()インタープリターから脱出するには、Python関数を使用する必要があります。
anishpatel 2016年

5
(Windows標準)^Z(Ctrl-Z)+ returnを使用して終了することもできます。
Emil Styrke 2017年

6
また、エイリアスをWindowsとは異なる「python」に設定する場合は、次の構文を使用して完全修飾パスを設定できますalias python='winpty /c/Python27/python.exe'
ScottMcC

10
これは私がインターネットで見つけた中で最高のものかもしれません。
mdw7326 2017

79

回答のリストに次のオプションが表示されませんが、「-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.
>>> 

-i引数:スクリプトが最初の引数として渡されるか、-cオプションが使用された場合、sys.stdinがターミナルに見えない場合でも、スクリプトまたはコマンドの実行後にインタラクティブモードに入ります。PYTHONSTARTUPファイルは読み取られません。docs.python.org/3/using/cmdline.html#cmdoption-i
Mercury

これはエイリアスpython = 'winpty python.exe'よりもコストがかかりますか?
PYK

1
これは、どのコンピューターでも機能する構成作業がゼロのオプションです。
vav

58

これはMSys2の既知のバグで、Git Bashが使用するターミナルを提供します。ncursesサポートなしでPythonビルドを実行するか、次のように使用されるWinPTYを使用することで、この問題を回避できます。

minttyまたはCygwin sshdでWindowsコンソールプログラムを実行するには、コマンドラインの前にconsole.exeを追加します。

$ 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()

msys用ビルド済みバイナリは、Git Bashで動作する可能性があります。(この回答が投稿されてからかなりの時間が経過した場合は、新しいバージョンがあるかどうかを確認してください!)


Git for Windows 2.7.1以降では、も使用してみてくださいwinpty c:Python27/python.exe。WinPTYは標準で含まれている場合があります。


2
説明してくださいbuild/console.exe c:/Python27/python.exe-これはGitMsysコンソールまたは他の方法で実行する必要がありますか?
0leg

@ h3d0、はい、ターミナル内。もちろん、これはそれbuildが中にあるディレクトリであることを前提console.exeとしています。実際にインストールした場所/方法に応じて、パスを適切に更新します。
Charles Duffy

1
@ h3d0はい、それは追加のソフトウェアです。私の答えにはリンクが含まれています。
Charles Duffy、2016

7
winpty c:/Python27/python.exe追加で何もせずにそのまま使えると思います。ユーティリティwinpty.exeはGit \ usr \ binにあります。私はGit for Windows v2.7.1を使用しています
Xun Yang

1
@XunYang、... winptyは現在バンドルされていますか?いいね!適切に編集されました。
Charles Duffy、

47

私は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です。

ここに画像の説明を入力してください

ありがとう。


2
私はそれwinptyがWindows Python Launcherでも動作することを発見したので、必要なのは、たとえばalias py='winpty py'.bashrcにあり、通常に戻るだけです。
Karl Knechtel、

ええ、それはあなた次第です、あなたはあなたの人生を良くするために物事をどのように管理しますか
hygull


8

@ Charles-Duffyの答えに加えて、追加のインストールやダウンロードをせずにwinptyを直接使用できます。とにかく走れwinpty c:/Python27/python.exeです。ユーティリティwinpty.exeはGit \ usr \ binにあります。Git for Windows v2.7.1を使用しています

@ Charles-Duffyからのビルド済みバイナリはバージョン0.1.1(ファイル名による)ですが、含まれているバイナリは0.2.2です。


8

Git Bashの回避策- エイリアスを使用してPython 2およびPython 3を起動する

こんにちは。これは(私にとって)Win 10上のGit Bashから直接Python(Python 2.7とPython 3.x)を実行するための最良のソリューションです=> Git Bashが使用するエイリアスファイルにエイリアスを追加します。

Git Bashのエイリアスファイルaliases.shです。 次の場所にあります。

C:\path where you installed Git\etc\profile.d\aliases.sh

1)aliases.shを(Atomなどのテキストエディターで)開きます。

例:私の場合、ファイルは 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つのエイリアスを作成する必要があります。1つはPython 2私はpython2という名前用で、もう1つはPython 3私は単にpythonという名前です用です。GitBashは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)OK !!! Git Bashを閉じて再起動します

今、あなたは永続的に両方のPythonをGitシェルから直接書くだけで書くことができます

$ python -> Python 3を起動

$ python2 -> Python 2を起動

$ ll -> ls -lahと入力して、詳細なファイルリストをすばやく表示します

乾杯、ハリー


5

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)を起動するために使用した方法です。最近のバージョンはそれを正常に開始し、それが私がそこに着いた方法です...


これは私のために働いた👍。bash.exeの引数が何をするのか注目に値しますか?manページは言う-l:ログインシェルとして呼び出されたかのようにbashを動作させる、-i
Day

以前はConEmuをwinptyなしで問題なく動作させていましたが、自分がやったことを完全に忘れていました。これは以前と同じように機能しました!
チャズ

5

「winpty python」と入力すると機能します

gitbashには、pythonで始まるコマンドを実行するときにいくつかの問題があります。これは、すべてのpython manage.pyコマンドにも当てはまります。常に 'winpty python manage.py'から始めます。少なくともこれが私にとってはうまくいきます。Windows 10を実行している。


2

@Vitaliy Terzievの回答に加えて

touch .bash_profileファイルにエイリアスを追加してみてください。


1
.bashrcを使用しましたが、Git Bashを開くと、bashrcが.bash_profileなしで存在するという警告メッセージが表示されました。.bashrcの名前を.bash_profileに変更したところ、警告は消えました。ありがとう。
JustinDanielson

2

解決策ではなく2つの回避策:私のGit Bashでは、次のコマンドがハングし、プロンプトが返されません。

% python

だから私はただ使う:

% winpty python

一部の人々は上記のように、あなたも使うことができます:

% python -i


1

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ます。


1

デフォルトのターミナルとしてgitbashを使用したvscodeのpythonバージョン3.7.3の場合、しばらくの間これに対処し、次に.bashrcにエイリアスを追加するという@Vitaliy Terzievのアドバイスに従いましたが、次の仕様を使用しました。

エイリアスpython = '“ / c / Users / my user name / AppData / Local / Programs / Python / Python37 / python.exe”'

「ユーザー名」スペースのため、一重引用符と二重引用符の組み合わせに注意してください。

私にとって、「winpty」はvscodeのpythonパスを解決できませんでした。


0

この問題の別の例は、ウィンドウ(gitバージョン2.19.0.windows.1を使用)でgit bash(MINGW64、Mintty)からAWS Elastic Beanstalkコマンドラインインターフェイス(awsebcli、eb cli)を使用することです。

ここに行くのにしばらく時間がかかったので、これを投稿しています。 eb-cli特定の問題を。

などのコマンドeb initeb config save、ユーザー入力を必要とし、表示されるフリーズ/ハングが発生します。実際には、コンソールはユーザー入力を要求するテキストで更新されていないと思います。さらに、eb deployコマンドが終了した後にのみコンソールテキストを更新するため、終了するまで進行状況の更新を確認できません。

git for windowsのリリースノート(v2.19.0用)やXun Yangの回答で述べたようになどで回避策は

winpty eb <command> (ただの代わりに eb <command>

このgit for windowsの問題で提案されている代替策は、mintty(gitのインストール時のオプション)ではなく、windowsのネイティブコンソールを使用することです。


0

私のために働いたのは、上記のこれらの素晴らしい答えで前述したように、エイリアスは次のとおりです(私は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)の非常に役立つ回答に感謝します。


0
  1. python.exe -i機能しますが、 "^ Z"(CTRL + Z)を送信してインタラクティブモードを終了すると問題が発生します。したがって、winpty python.exeGit Bash for Windowsで使用する方が良いようです。

  2. ~/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 ${@}

どこから来たのか常に忘れてしまい、場合によっては問題を引き起こすこれらの「魔法の」エイリアスは好きではありません。

  1. ~/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
カービー

0

Pythonの代わりにPYコマンドを入力します。インタープリター(python.org)を呼び出します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.