अजगर बैश की कमांड लाइन में काम नहीं कर रहा है


236

अजगर गैश बैश (विंडोज) में नहीं चलेगा। जब मैं कमांड लाइन में अजगर टाइप करता हूं, तो यह मुझे यह कहे बिना एक खाली लाइन में ले जाता है कि इसने अजगर में 2.7.10 दर्ज किया है जैसे कि इसके पॉवर्स में है। यह मुझे एक त्रुटि संदेश नहीं देता है, लेकिन अजगर बस नहीं चलता है।

मैंने पहले ही सुनिश्चित कर लिया है कि PATH में पर्यावरण चर शामिल हैं c:\python27। मैं और क्या जांच सकता हूँ?


एक सत्र जिसमें यह समस्या होती है, निम्न की तरह दिखता है:

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

user@hostname MINGW64 ~
$ python

... वहां बिना प्रॉम्प्ट के वापस लौट गए।


2
"कुछ नहीं हुआ"? आपको कोई त्रुटि भी नहीं है? (जो कहना है: यदि आपको एक त्रुटि संदेश मिलता है, तो यह आपके प्रश्न का हिस्सा होना चाहिए)।
चार्ल्स डफी

@ संक्षिप्त, बाश वास्तव में पाथ का सम्मान करता है। (यह उस चर का अपना संस्करण है, हालांकि)।
चार्ल्स डफी

11
अजगर में टाइप करने पर मुझे कोई त्रुटि संदेश नहीं मिलता है। यह सिर्फ मुझे एक खाली रेखा पर ले जाता है, लेकिन यह नहीं दिखाता है कि अजगर वास्तविक रूप से चल रहा है
कैरोलीन मॉरिस

4
@CharlesDuff, उसने स्पष्ट किया, चार्ल्स, कोई त्रुटि संदेश नहीं। बैश बस जमा देता है। टर्मिनल को फ्रीज़ करना त्रुटि संदेश है।
ग्रीन

1
@Green, जैसा कि मेरे उत्तर से स्पष्ट होना चाहिए, यह अब स्पष्टता का अभाव नहीं है - और एक वर्ष के बेहतर हिस्से के लिए नहीं है। इसके अलावा, प्रश्न इस बिंदु पर उतना स्पष्ट नहीं था जितना कि अब तक मैंने इसे इस सूत्र में ओपी की टिप्पणी के बाद इस बिंदु पर असंदिग्ध बनाने के लिए संपादित किया है ; इतिहास की जाँच करें।
चार्ल्स डफी

जवाबों:


361

बस खिड़कियों पर अपने गिट खोल में दर्ज करें -> alias python='winpty python.exe', यह सब है और आप अजगर निष्पादन योग्य के लिए उर्फ ​​होने जा रहे हैं। का आनंद लें

PS स्थायी उपनाम के अलावा नीचे देखें,

cd ~
touch .bashrc

फिर .bashrc खोलें, ऊपर से अपनी कमांड जोड़ें और फ़ाइल को सहेजें। आपको कंसोल के माध्यम से फ़ाइल बनाने की आवश्यकता है या आप इसे उचित नाम से नहीं बचा सकते हैं। आपको परिवर्तन को लागू करने के लिए शेल को पुनरारंभ करने की भी आवश्यकता है।


17
एक जादू की तरह काम करता है।
ग्रीन

4
नोट: quit()दुभाषिया से बाहर निकलने के लिए आपको पायथन फ़ंक्शन का उपयोग करना होगा ।
अनीपतेल

5
आप बाहर निकलने के लिए ^Z( विंडोज़ मानक) (ctrl-Z) + returnका भी उपयोग कर सकते हैं ।
एमिल स्टायरके

6
इसके अलावा अगर आप उर्फ ​​को 'अलग' पायथन से सेट करना चाहते हैं, तो खिड़कियों से आप निम्न सिंटैक्स का उपयोग करके इसे पूरी तरह से योग्य पथ सेट कर सकते हैंalias python='winpty /c/Python27/python.exe'
ScottMcC

10
यह सबसे अच्छी बात हो सकती है जो मैंने कभी इंटरनेट पर पाया है।
mdw7326

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
बुध

क्या यह उर्फ पाइथन = 'विनिपेट पाइथन ..exe' से अधिक महंगा है ?
PYK

1
यह शून्य कॉन्फ़िगरेशन प्रयास के साथ विकल्प है जो किसी भी कंप्यूटर पर काम करता है।
vav

58

यह MSys2 में एक ज्ञात बग है, जो गिट बैश द्वारा उपयोग किया जाने वाला टर्मिनल प्रदान करता है। आप ncurses समर्थन के बिना पायथन बिल्ड चलाकर या WinPTY का उपयोग करके इसके चारों ओर काम कर सकते हैं , निम्नानुसार उपयोग किया जाता है:

मिनिटेट या सिग्विन sshd में विंडोज कंसोल प्रोग्राम चलाने के लिए, कंसोल को प्री-कमांड करें। कमांड लाइन को:

$ 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 बैश के साथ काम करने की संभावना है। (यह उत्तर पोस्ट किए जाने के बाद से महत्वपूर्ण समय बीत चुका है या नहीं, इसकी जाँच करें।)


Windows 2.7.1 के लिए Git के रूप में, उपयोग करने का भी प्रयास करें winpty c:Python27/python.exe ; WinPTY को आउट-ऑफ-द-बॉक्स शामिल किया जा सकता है।


2
क्या आप कृपया, समझा सकते हैं build/console.exe c:/Python27/python.exe- यह GitMsys कंसोल या किसी अन्य तरीके से चलाया जाना चाहिए?
०११

@ h3d0, हां, टर्मिनल के अंदर। बेशक, यह मानता है कि buildवह निर्देशिका है console.exeजो में है; पथ को उचित रूप से अद्यतन करें कि आप वास्तव में कहाँ / कैसे स्थापित करते हैं, इस पर निर्भर करता है।
चार्ल्स डफी

1
@ h3d0 हां, यह अतिरिक्त सॉफ्टवेयर है; मेरे जवाब में एक लिंक शामिल है।
चार्ल्स डफी

7
मुझे लगता है कि आप इसका उपयोग कर सकते हैं winpty c:/Python27/python.exe, बिना कुछ अतिरिक्त किए। उपयोगिता winpty.exe को Git \ usr \ bin में पाया जा सकता है। मैं विंडोज v2.7.1 के लिए Git का उपयोग कर रहा हूं
Xun Yang

1
@XunYang, ... winpty अब में बंडल है? अच्छा! उचित रूप से संपादित।
चार्ल्स डफी

47

मैं विंडोज़ 10 उपयोगकर्ता हूं और मैंने इंस्टॉल किया है केवल डिफॉल्ट को स्वीकार करके अपने सिस्टम में GIT

उपरोक्त उत्तरों को पढ़ने के बाद, मुझे अपने लिए 2 समाधान मिल गए और ये 2 समाधान पूरी तरह से जीआईटी बैश पर काम करते हैं और मुझे पायथन के बयानों को निष्पादित करने की सुविधा प्रदान करते हैं। जीआईटी बैश ।

मैं अपने जीआईटी बैश टर्मिनल के 3 चित्र संलग्न कर रहा हूं । समस्या के साथ 1 और समाधान के रूप में बाद के 2।

समस्या - pythonकमांडर को बस कमांड मारने के बाद इंतजार करना पड़ता है

यहां छवि विवरण दर्ज करें

समाधान 1

जीआईटी बैश टर्मिनल winpty <path-to-python-installation-dir>/python.exeपर निष्पादित करें ।

नोट: जीआईटी बैश C:\Users\Adminमें पथ शैली की तरह उपयोग न करें , इसके बजाय उपयोग करें ।/C/Users/Admin

मेरे मामले में, मैंने जीआईटी बैश winpty /C/Users/SJV/Anaconda2/python.exeपर कमांड निष्पादित की

या यदि आपको अपना उपयोगकर्ता नाम नहीं पता है तो निष्पादित करेंwinpty /C/Users/$USERNAME/Anaconda2/python.exe

यहां छवि विवरण दर्ज करें

समाधान २

बस टाइप करें python -iऔर वह यह है।

यहां छवि विवरण दर्ज करें

धन्यवाद।


2
मैंने पाया कि winptyयह विंडोज पायथन लॉन्चर के साथ भी काम करेगा, इसलिए आपको alias py='winpty py'अपने .bashrc में उदाहरण की आवश्यकता है और फिर सामान्य स्थिति में वापस जाएं।
कार्ल Knechtel

हाँ, यह आपके ऊपर है, आप अपने जीवन को बेहतर बनाने के लिए चीजों का प्रबंधन कैसे करते हैं।
हाईगुल

9

python -iइसके बजाय कोशिश करें python, यह एक कर्सर बात है।


8

@ चार्ल्स-डफी के उत्तर के अलावा, आप कुछ भी अतिरिक्त स्थापित / डाउनलोड किए बिना सीधे विनिपेट का उपयोग कर सकते हैं। बस दौडोwinpty c:/Python27/python.exe । उपयोगिता winpty.exe को Git \ usr \ bin में पाया जा सकता है। मैं Windows v2.7.1 के लिए Git का उपयोग कर रहा हूं

@ चार्ल्स-डफी से प्रीबिल्ट बायनेरीज़ संस्करण 0.1.1 (फ़ाइल नाम के अनुसार) है, जबकि इसमें शामिल 0.2.2 है


8

गिट बैश वर्कअराउंड- पायथन 2 और पायथन 3 को एलियास के साथ लॉन्च करें

हाय । यह विन (मेरे लिए) पायथन (Python 2.7 और Python 3.x दोनों) को चलाने के लिए सबसे अच्छा उपाय है, विन 10 पर सीधे Git Bash से = = उपनामों को उपनाम फ़ाइल में जोड़ते हुए, जिसे Git Bash उपयोग करता है।

Git बैश उपनाम फ़ाइल है aliases.shयह उसमें मौजूद है:

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

1) ओपन (एटम या अन्य की तरह एक टेक्स्ट एडिटर के साथ)

पूर्व के लिए: मेरे मामले में फ़ाइल में है C:\Software\Develop\Git\etc\profile.d\aliases.sh

2) अजगर के लिए अपना उपनाम जोड़ें

मेरे मामले में python.exe इनस्टॉल है:

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

तो आपको 2 उपनाम बनाने होंगे, एक पायथन 2 के लिए ( मैंने python2 नाम दिया है ) और दूसरा पायथन 3 के लिए ( मुझे सिर्फ अजगर का नाम दिया गया है ) Git Bash linux file संरचना का उपयोग करता है, इसलिए आपको "" और " " के लिए " " बदलने की आवश्यकता है। मेरे उदाहरण की तरह एक रास्ता है नेटवर्क स्वचालन आप इसे "" के साथ रखें

"नेटवर्क स्वचालन" , पूर्व के लिए।

winpty जादू कमांड है जो निष्पादन योग्य को कॉल करेगा।

तो एलियासेस.श की शुरुआत में इन पंक्तियों को जोड़ें

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) एलियासेस.श फाइल को सेव करें


5) ठीक है !!! अपने गिट बैश को बंद करें और पुनः लोड करें

अब, स्थायी रूप से आप गीथ शेल से सीधे पायथन दोनों को लॉन्च कर सकते हैं

$ python -> पायथन 3 लॉन्च

$ python2 -> पायथन 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) शुरू करने के लिए उपयोग किया था। हाल का संस्करण इसे सामान्य रूप से शुरू करता है और यह है कि मुझे वहां कैसे मिला ...


इसने मेरे लिए काम किया 👍। बशिंग। तर्क क्या कर रहे हैं? मैन पेज कहता है -l: बैश अधिनियम बनाएं जैसे कि इसे एक लॉगिन शेल के रूप में आमंत्रित किया गया था -i: यदि -i विकल्प मौजूद है, तो शेल इंटरैक्टिव है
दिन

मुझे थोड़ी देर पहले बिना कंफर्ट के काम करना कॉनमू के लिए अच्छा लगता था और मैंने जो किया उसे पूरी तरह से भूल गया। धन्यवाद यह पहले की तरह ही काम किया!
चेज

5

टाइप: 'विनिपेट अजगर' और यह काम करेगा

अजगर के साथ शुरू होने वाली किसी भी कमांड को चलाने के दौरान gitbash के कुछ मुद्दे होते हैं। यह किसी भी python manage.py कमांड के लिए भी जाता है। हमेशा 'winpty python manage.py' से शुरू करें कम से कम मेरे लिए यही काम करता है। विंडोज 10 चल रहा है।


2

@Vitaliy Terziev जवाब के अलावा

कोशिश करें touch .bash_profileऔर फिर फ़ाइल में अन्य नाम जोड़ें।


1
मैंने .bashrc का उपयोग किया, लेकिन जब मैंने Git Bash को खोला, तो मुझे एक चेतावनी संदेश मिला कि bashrc में w / oa .bash_profile मौजूद है। मैंने .bashrc को .bash_profile नाम दिया और अब चेतावनी चली गई। धन्यवाद।
जस्टिनडनील्सन

2

2 वर्कअराउंड, एक समाधान के बजाय: मेरे गिट बैश में, निम्नलिखित कमांड लटका हुआ है और मुझे शीघ्र वापस नहीं मिलता है:

% python

इसलिए मैं अभी उपयोग करता हूं:

% winpty python

जैसा कि कुछ लोगों ने ऊपर उल्लेख किया है, आप भी उपयोग कर सकते हैं:

% python -i


1

मैं विंडोज 10 पर विजुअल स्टूडियो कोड के माध्यम से MINGW64 का उपयोग कर रहा हूं और स्थापित करने की कोशिश कर रहा हूं node-sass(जिसकी आवश्यकता है python2)। मैंने गितुब पर felixrieseberg / windows-build-tools # 56 का अनुसरण किया जिससे मेरी समस्या हल हो गई।

यह एक विशेष मामला है, लेकिन मैं मामले में किसी को एक ही समस्या है पोस्ट कर रहा हूँ:

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

यह अजगर और अन्य आवश्यक बिल्ड टूल्स को स्थापित करता है %USERPROFILE%\.windows-build-tools\python27


1

Python वर्जन 3.7.3 के लिए vscode में gitbash विथ डिफॉल्ट टर्मिनल क्योंकि मैं इसके साथ थोड़ी देर के लिए काम कर रहा था और उसके बाद @Vitaliy Terziev को उपनाम जोड़ने के लिए .bashrc लेकिन निम्नलिखित विनिर्देशन के साथ सलाह दी:

उर्फ अजगर = '' / सी / उपयोगकर्ता / मेरे उपयोगकर्ता नाम / AppData / स्थानीय / कार्यक्रम / पायथन / पायथन37 / python.exe "'

"मेरे उपयोगकर्ता नाम" रिक्त स्थान के कारण एकल और दोहरे उद्धरणों के संयोजन पर ध्यान दें।

मेरे लिए, "विनिपेट" vscode में अजगर पथ को हल नहीं कर सका।


0

इस समस्या का एक अन्य उदाहरण विंडोज़ में git bash (MINGW64, मिंटी) से AWS इलास्टिक बीनस्टॉक कमांड लाइन इंटरफ़ेस (awsebcli, eb cli) का उपयोग कर रहा है (git संस्करण 2.19.0. Windows का उपयोग करके)।

मैं इसे केवल इसलिए पोस्ट कर रहा हूं क्योंकि मुझे यहां समाप्त होने में कुछ समय लगा, eb-cliविशिष्ट मुद्दों की खोज में ।

जैसे eb initया eb config save, जिसके लिए उपयोगकर्ता इनपुट की आवश्यकता होती है, फ्रीज / हैंग होने का कारण बनता है। वास्तव में मुझे लगता है कि कंसोल उपयोगकर्ता अनुरोध के पाठ के साथ अद्यतन नहीं है। इसके अलावा, eb deployकमांड समाप्त होने के बाद केवल कंसोल टेक्स्ट को अपडेट करता है, इसलिए मुझे समाप्त होने तक प्रगति अपडेट देखने को नहीं मिलता है।

जैसा कि विंडोज़ रिलीज़ नोट्स (v2.19.0 के लिए) और Xun यांग के उत्तर में उदाहरण के लिए , एक वर्कअराउंड रन करने के लिए है

winpty eb <command>(सिर्फ के बजाय eb <command>)

एक विकल्प, जैसा कि विंडोज़ इशू के लिए इस git में सुझाया गया है , मीनट्टी के बजाय विंडोज़ देशी कंसोल (git इंस्टॉलेशन के दौरान विकल्प) का उपयोग करने के लिए हो सकता है।


0

मेरे लिए काम किया गया है जैसा कि पहले उल्लेख किया गया है कि इन महान जवाबों में उपरोक्त उपनाम इस प्रकार है: (मैं एनाकोंडा का उपयोग कर रहा हूं, इसलिए पहले यह पता लगाएं कि अजगर पथ कहां है, फिर इसे गिट बैश पर उपनाम में जोड़ें)। 1. एनाकोंडा टर्मिनल पर मैं चलता हूं: where python 2. गिट बैश पर मैं चलता हूं: alias python='winpty "C:\ProgramData\Anaconda3\envs\your_env_name\python.exe"' 3. हो गया। पायथन को उर्फ ​​का उपयोग करके गिट बैश के अंदर परिभाषित किया गया है।

उनके (बहुत उपयोगी उत्तर के लिए विटाली टेरिजीव एंड हाइगुल) को धन्यवाद।


0
  1. python.exe -iकाम करता है लेकिन "^ Z" (CTRL + Z) भेजकर इंटरेक्टिव मोड से बाहर निकलने में समस्या आती है। तो, winpty python.exeविंडोज के लिए गिट बैश में उपयोग करना बेहतर लगता है ।

  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
Kirby

0

पाइथन की जगह कमांड PY टाइप करें। इंटरप्रेटर (python.org) को आमंत्रित करना।


-2

इस जवाब पर एक नजर:

Git Bash मेरी पायथन फ़ाइलों को नहीं चलाएगा?

गिट बैश में रास्ता इस तरह निर्धारित किया जाना चाहिए:

PATH=$PATH:/c/Python27/

2
दरअसल नहीं! मैं ओपी की समस्या को पुन: उत्पन्न कर सकता हूं, और अजगर बिना मुद्दों के पीएटीएच में पाया जाता है। देखें sourceforge.net/p/msys2/tickets/32
चार्ल्स डफी

OP की पोस्ट बताती है कि PATH समस्या नहीं है।
हिल्टन शुमवे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.