Python git bash komut satırında çalışmıyor


236

Python git bash (Windows) içinde çalışmaz. Komut satırına python yazdığımda, Powershell'deki gibi python 2.7.10'a girdiğini söylemeden boş bir satıra götürür. Bana bir hata mesajı vermiyor, ancak python çalışmıyor.

PATH'deki çevresel değişkenlerin dahil edildiğinden zaten emin oldum c:\python27. Başka neleri kontrol edebilirim?


Bu sorunun oluştuğu bir oturum aşağıdaki gibi görünür:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python

user@hostname MINGW64 ~
$ python

... isteme dönmeden orada oturuyor.


2
"Hiçbir şey olmuyor"? Hata bile almıyor musunuz? (Yani: Bir hata mesajı alırsanız, bu sorunuzun bir parçası olmalıdır).
Charles Duffy

@ recursive, bash gerçekten PATH'a saygı duyar. (Yine de bu değişkenin kendi sürümü vardır).
Charles Duffy

11
Python yazdığımda hata mesajı almıyorum. Bu beni boş bir satıra götürüyor, ancak python'un gerçekte çalıştığını göstermiyor
Caroline Morris

4
@CharlesDuff, açıkça belirtti Charles, hata mesajı yok. Bash sadece donuyor. Bir terminalin dondurulması hata mesajıdır.
Yeşil

1
@Yeşil, cevabımın açık olması gerektiği gibi, bu artık netlikten yoksun bir nokta değil - ve yılın daha iyi bir parçası olmadı. Üstelik, soru ben bunu düzenlenebilir kadar şu anda olduğu gibi bu noktada net olarak değildi yapmak daha önce bu thread OP'ın yorumları sonrasında noktada o kesin; geçmişi kontrol et.
Charles Duffy

Yanıtlar:


361

Sadece penceredeki git kabuğunuza girin -> alias python='winpty python.exe', hepsi bu ve python yürütülebilir için bir takma adınız olacak. Zevk almak

PS Kalıcı takma ad eklemek için aşağıya bakın,

cd ~
touch .bashrc

sonra .bashrc'yi açın, komutunuzu yukarıdan ekleyin ve dosyayı kaydedin. Dosyayı konsoldan oluşturmanız gerekir veya doğru adla kaydedemezsiniz. Değişikliği uygulamak için kabuğu da yeniden başlatmanız gerekir.


17
Tıkır tıkır çalışıyor.
Yeşil

4
Not: quit()Yorumlayıcıdan çıkmak için Python işlevini kullanmanız gerekecektir .
anishpatel

5
Çıkmak için ^Z( standart pencereler) (ctrl-Z) + tuşlarını da kullanabilirsiniz return.
Emil Styrke

6
Ayrıca, diğer adı pencerelerden daha farklı bir python olarak ayarlamak isterseniz, aşağıdaki sözdizimini kullanarak tam bir yol ayarlayabilirsinizalias python='winpty /c/Python27/python.exe'
ScottMcC

10
Bu şimdiye kadar internette bulduğum en iyi şey olabilir.
mdw7326

79

Bir cevaplar listesinde sonraki seçeneği görmüyorum, ancak "-i" tuşu ile etkileşimli bilgi istemi alabilirim:

$ 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 argümanı: Bir komut dosyası ilk argüman olarak iletildiğinde veya -c seçeneği kullanıldığında, komut dosyası veya komutu yürüttükten sonra, sys.stdin bir terminal gibi görünmese bile etkileşimli moda girin. PYTHONSTARTUP dosyası okunmuyor. docs.python.org/3/using/cmdline.html#cmdoption-i
Merkür

Bu, python = 'winpty python.exe' takma adından daha maliyetli mi?
PYK

1
bu, herhangi bir bilgisayarda çalışan sıfır yapılandırma çabası olan seçenektir.
vav

58

Bu, Git Bash tarafından kullanılan terminali sağlayan MSys2'de bilinen bir hatadır. Ncurses desteği olmadan bir Python derlemesi çalıştırarak veya aşağıdaki gibi kullanılan WinPTY kullanarak çalışabilirsiniz :

Bir Windows konsol programını nane veya Cygwin sshd içinde çalıştırmak için, console.exe'yi komut satırına ekleyin:

$ 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 için önceden oluşturulmuş ikili Git Bash ile işe muhtemeldir. (Bu yanıtın gönderilmesinden bu yana önemli bir süre geçtiyse daha yeni bir sürüm olup olmadığını kontrol edin!).


Windows 2.7.1 için Git'ten itibaren winpty c:Python27/python.exe; WinPTY kullanıma hazır olarak dahil edilebilir.


2
Lütfen, build/console.exe c:/Python27/python.exe- bunun GitMsys konsolunda veya başka bir şekilde çalıştırılması gerektiğini açıklayabilir misiniz ?
bacak

@ h3d0, evet, terminalin içinde. Tabii ki, bu builddizin içinde olduğunu varsayar console.exe; gerçekte nereye / nasıl yüklediğinize bağlı olarak yolu uygun şekilde güncelleyin.
Charles Duffy

1
@ h3d0 Evet, ek bir yazılımdır; cevabım bir link içeriyor.
Charles Duffy

7
Bence winpty c:/Python27/python.exeek bir şey yapmadan kullanabilirsiniz . Winpty.exe yardımcı programını Git \ usr \ bin adresinde bulabilirsiniz. Windows v2.7.1 için Git kullanıyorum
Xun Yang

1
@XunYang, ... winpty şimdi paketlenmiş mi? Güzel! Uygun şekilde düzenlendi.
Charles Duffy

47

Windows 10 kullanıcısıyım ve sistemime GIT'yi sadece varsayılanları kabul ederek yükledim .

Yukarıdaki cevapları okuduktan sonra, kendim için 2 çözüm buldum ve bu 2 çözüm GIT bash üzerinde mükemmel bir şekilde çalışıyor ve GIT bash üzerinde Python ifadelerini yürütmemi kolaylaştırıyor .

GIT bash terminalimin 3 görüntüsünü ekliyorum . 1. sorunlu, ikincisi çözüm olarak.

SORUN - İmleç sadece pythonkomut verildikten sonra bekliyor

resim açıklamasını buraya girin

ÇÖZÜM 1

Yürütme winpty <path-to-python-installation-dir>/python.exeilgili GİT Bash terminali.

Not: GIT bash'de C:\Users\Adminyol stili gibi kullanmayın , kullanın ./C/Users/Admin

Benim durumumda, GIT bash winpty /C/Users/SJV/Anaconda2/python.exeüzerinde komut yürüttüm

Eğer bilmiyorsanız Ya adı daha sonra yürütmekwinpty /C/Users/$USERNAME/Anaconda2/python.exe

resim açıklamasını buraya girin

ÇÖZÜM 2

Sadece yazın python -ive hepsi bu.

resim açıklamasını buraya girin

Teşekkürler.


2
Bunun winptyWindows Python Launcher ile de çalışacağını buldum , bu yüzden ihtiyacınız olan tek şey örneğin alias py='winpty py'.bashrc'nizde ve sonra normale dönün.
Karl Knechtel

Evet, bu size bağlı, hayatınızı daha iyi hale getirmek için işleri nasıl yönetiyorsunuz?
hygull

9

python -iBunun yerine deneyin python, bu bir imleç işi.


8

@ Charles-Duffy'nin cevabına ek olarak, ekstra bir şey yüklemeden / indirmeden doğrudan winpty'yi kullanabilirsiniz. Sadece koş winpty c:/Python27/python.exe. Winpty.exe yardımcı programını Git \ usr \ bin adresinde bulabilirsiniz. Windows v2.7.1 için Git kullanıyorum

@ Charles-Duffy'nin önceden oluşturulmuş ikili dosyaları sürüm 0.1.1'dir (dosya adına göre), dahil olan 0.2.2'dir.


8

Git Bash Geçici Çözümü- Python 2 ve Python 3'ü diğer adlarla başlatın

HI . Bu benim için Python'u (Python 2.7 ve Python 3.x) doğrudan Win 10 => üzerinde Git Bash'den çalıştırmak için en iyi çözümdür.

Git Bash takma adları dosya olduğunu aliases.sh . Bulunduğu yer:

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

1) aliases.sh dosyasını açın (Atom veya başka bir metin düzenleyicisiyle).

örneğin: benim durumumda dosya var C:\Software\Develop\Git\etc\profile.d\aliases.sh

2) Python için takma adınızı ekleyin

Benim durumumda python.exe yüklenir:

C:\Networking\Network Automation\Python 2.7\python.exe
C:\Networking\Network Automation\Python 3.7\python.exe

Yani size 2 adlar, Python 2 için bir tane oluşturmanız gerekir ( ı adında python2 ) ve Python 3 diğer ( Sadece adlı piton değiştirmeniz gereken böylece) Git Bash Linux dosya yapısını kullanan "\" için "/" ve eğer benim örnekteki gibi bir yol var Ağ Otomasyon sizinle koydu ""

"Ağ Otomasyonu" , ör.

winpty çalıştırılabilir dosyayı çağıracak sihirli komuttur.

Öyleyse bu satırları takma adların başına ekleyin.

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) Diğer takma adlar ekleyin veya değiştirin (isterseniz)

Ayrıca tüm dosyaları göstermek için ll diğer adını değiştirdim ve insan tarafından okunabilir bir listede:

alias ll='ls -lah'

4) aliases.sh dosyasını kaydedin


5) Tamam !!! Git Bash'inizi kapatın ve yeniden başlatın

Şimdi, kalıcı olarak her iki Python'u doğrudan Git kabuğundan başlatabilirsiniz

$ python -> Python 3'ü başlat

$ python2 -> Python 2'yi başlat

$ ll -> hızlı bir şekilde ayrıntılı dosya listenizi göstermek için bir ls -lah girer

Şerefe Harry


5

Git Bash kısayolunun hedefini şuradan değiştirebilirsiniz:

"C:\Program Files\Git\git-bash.exe" --cd-to-home 

için

"C:\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i

ConEmu'nun git bash'ı (sürüm 16) başlatmak için kullandığı yol budur. Son sürüm normal olarak başlar ve ben oraya nasıl var ...


Bu benim için çalıştı 👍. Bash.exe argümanlarının ne yaptığını belirtmeye değer mi? Adam sayfa diyor -l: Bir giriş kabuğu olarak çağrıldığında olmuştu Yap bash hareket sanki -i: -i seçenekleri varsa, kabuk etkileşimli
Gün

Bir süre önce ConEmu'nun cılız olmadan iyi çalışmasını ve yaptığımı tamamen unuttum. Teşekkürler bu daha önce olduğu gibi çalıştı!
chaz

5

yazın: 'winpty python' ve işe yarayacak

gitbash, python ile başlayan herhangi bir komutu çalıştırırken bazı sorunlar yaşıyor. bu herhangi bir python manage.py komutu için de geçerlidir. Her zaman 'winpty python manage.py' ile başlayın En azından bu benim için işe yarıyor. Windows 10 çalıştırıyor.


2

@Vitaliy Terziev yanıtına ek olarak

deneyin touch .bash_profileve sonra dosyaya takma ad ekleyin.


1
.Bashrc kullandım, ancak Git Bash'ı açtığımda, bashrc'nin .bash_profile olmadan var olduğuna dair bir uyarı mesajı aldım. .Bashrc adını .bash_profile olarak değiştirdim ve şimdi uyarı kayboldu. Teşekkürler.
JustinDanielson

2

Bir çözüm yerine 2 geçici çözüm: Git Bash'imde aşağıdaki komut askıda kalıyor ve istemi geri alamıyorum:

% python

Bu yüzden sadece kullanıyorum:

% winpty python

Bazı insanların yukarıda belirttiği gibi, şunları da kullanabilirsiniz:

% python -i

.


1

MINGW64'ü Windows 10 üzerinde Visual Studio Code ile kullanıyorum ve yüklemeye çalışıyorum node-sass(ki bunu gerektiriyor python2). Sorunumu çözen Github'da 56 numaralı felixrieseberg / windows-build-tools # 56'yı takip ettim .

Bu özel bir durum, ancak birisinin aynı sorunu olması durumunda gönderiyorum:

npm --add-python-to-path='true' --debug install --global windows-build-tools

Bu, python ve diğer gerekli oluşturma araçlarını yükler %USERPROFILE%\.windows-build-tools\python27.


1

Varsayılan terminal olarak gitbash ile vscode'da python sürüm 3.7.3 için bir süre bununla uğraşıyordum ve daha sonra @Vitaliy Terziev'in .bashrc'ye takma ad eklemesi tavsiyesini takip ettim:

takma ad python = '“/ c / Kullanıcılar / kullanıcı adım / AppData / Local / Programlar / Python / Python37 / python.exe”'

“Kullanıcı adım” boşluklarından dolayı tek ve çift tırnak kombinasyonlarına dikkat edin.

Benim için, "winpty" vscode'daki python yolunu çözemedi.


0

Bu sorunun başka bir örneği, Windows'ta git bash (MINGW64, Mintty) (git sürüm 2.19.0.windows.1 kullanılarak) AWS Elastik Beanstalk komut satırı arabirimini (awsebcli, eb cli) kullanmaktır.

Bunu gönderiyorum çünkü burada bitirmek ve eb-clibelirli sorunları aramak biraz zamanımı aldı .

Gibi komutlar eb initveya eb config savekullanıcı girişi gerektiren, görünür asmak / dondurulmasını neden. Gerçekte konsol kullanıcı girişi isteyen metin ile güncellenmemiş sanırım. Ayrıca, eb deploykonsol metni yalnızca komut bittikten sonra güncellenir, bu yüzden bitene kadar ilerleme güncellemelerini göremiyorum.

Windows sürüm notları için git'te belirtildiği gibi (v2.19.0 için) ve örneğin Xun Yang'ın cevabında , bir geçici çözüm çalıştırmaktır.

winpty eb <command>(sadece yerine eb <command>)

Windows için bu git sayısında önerildiği gibi bir alternatif, nintty yerine windows yerel konsolunu kullanmak olabilir (git kurulumu sırasında seçenek).


0

Benim için çalışan biri yukarıda bu büyük cevaplarda yukarıda belirtildiği gibi aşağıdaki gibi takma ad: 1. anaconda terminalinde çalıştırıyorum: where python 2. git bash'da çalıştırıyorum: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3. Bitti. Python, git Bash içinde takma ad kullanılarak tanımlanır.

(Vitaliy Terziev & hygull) çok yardımcı cevapları için teşekkürler.


0
  1. python.exe -içalışır ancak "^ Z" (CTRL + Z) göndererek etkileşimli moddan çıkarken sorun yaşarsınız. Bu nedenle, winpty python.exeWindows için Git Bash'te kullanmak daha iyi görünüyor .

  2. Her yerden erişilebilen ~/binbir kaydırma / referans dosyası (gibi ~/bin/python) oluşturmak için dizini kullanın (gibi farklı sürüm referansı kullanabilirsiniz ~/bin/python37).
    Dosyanın içindeki kod:

#!/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 ${@}

Nereden geldiğini her zaman unutacağınız ve bazen bazı durumlarda sorunlara yol açan bu "sihirli" takma adları sevmiyorum.

  1. ~/bin/pythonDosya ve -iparametre kullan :
#!/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)- ^Zetkileşimli mod ile gönderdikten sonra yanıt örneği koştupython.exe -i
Kirby

0

Python yerine PY komutunu yazın. Yorumlayıcıyı Çağırmak (python.org).


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.