2010-12-31 19 views
5

पर "अमान्य वाक्यविन्यास" देता है मुझे एक बेहद भ्रमित समस्या का सामना करना पड़ा है। जो कुछ भी मैं पाइथन दुभाषिया में टाइप करता हूं वह "अमान्य सिंटेक्स" देता है। नीचे उदाहरण देखें। मैंने प्रॉम्प्टर के कोड पेज के साथ चारों ओर बेवकूफ़ बनाने की कोशिश की है, जिससे मैं दुभाषिया चलाता हूं, लेकिन यह बिल्कुल मदद नहीं करता है।पायथन इंटरएक्टिव इंटरप्रेटर हमेशा विंडोज

इसके अलावा, मैं इस विशेष, अजीब बग को कहीं और ऑनलाइन नहीं ढूंढ पाया है।

कोई भी सहायता जो भी प्रदान कर सकता है वह सुंदर होगा। मैंने पहले ही पाइथन को पुनर्स्थापित करने का प्रयास किया है, लेकिन मेरे पास कोई भाग्य नहीं था - समस्या 3.13 और 2.7 दोनों में भी है।

रनिंग: पायथन संस्करण 3.1.3, विंडोज एक्सपी एसपी 3।

हो रही है:

C:\Program Files\Python31>.\python 
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on 
win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 2+2 
    File "<stdin>", line 1 
    2+2 
    ^ 
SyntaxError: invalid syntax 

>>> x = "Oh, fiddlesticks." 
    File "<stdin>", line 1 
    x = "Oh, fiddlesticks." 
         ^ 
SyntaxError: invalid syntax 
+0

यह क्या है ...? – user225312

+0

क्या आपने पाइथन को पुनर्स्थापित करने का प्रयास किया है, है ना? – Ant

+0

पुन: स्थापित करने का प्रयास किया, साथ ही साथ 2.7 का उपयोग किया। कोई भाग्य किसी भी तरह से नहीं। – user559217

उत्तर

0

एक बार, 2002 की तरह में, मैं जो Windows लाइन समाप्त होने के साथ नहीं चल सकता है अजगर का एक संस्करण बनाने में कामयाब रहे। यह लाइन के अंत में इशारा करते हुए इस तरह वाक्यविन्यास त्रुटियों को देगा। मुझे यह बेहद असंभव लगता है कि हालांकि इस मामले में यह एक समस्या है, खासकर जब से आप विंडोज इंस्टॉलेशन का उपयोग कर रहे हैं।

मुझे भी इसी तरह की समस्याएं थीं जब मैं अनजाने में केवल रिक्त स्थान की बजाय गैर-ब्रेकिंग रिक्त स्थान का उपयोग कर रहा था, लेकिन मुझे नहीं लगता कि यह प्रॉम्प्ट से कैसे होगा, और आपके अलावा 2 + 2 उदाहरण रिक्त स्थान का उपयोग नहीं करता है उद्धरण जो भी एक समस्या हो सकती है।

आप किस एन्कोडिंग और कीबोर्ड सेटिंग्स का उपयोग कर रहे हैं?

+0

कीबोर्ड एन-यूएस है। Cmd में कोडपेज 437 (यूएस) पर डिफ़ॉल्ट है। स्थानीयकरण सेटिंग्स भी एन-यूएस हैं। मुझे यकीन नहीं है कि आपको इससे परे कौन सा डेटा चाहिए; मैं विंडोज़ को बहुत अच्छी तरह से नहीं बोलता ... – user559217

+0

और इस तरह से इसे देखने के लिए धन्यवाद। – user559217

+0

@ user559217: ठीक है, आपकी समस्या "असंभव" है और ऐसा नहीं हो सकता है। यदि आपके पास पीसी सेटअप है तो इसे रिमोट कंट्रोल के साथ रिमोट कंट्रोल किया जा सकता है, मैं इसे देख सकता हूं, क्योंकि यह बहुत विचित्र है। :) –

4

अब नमूना साफ़ कर दिया गया है, ऐसा लगता है कि समस्या लाइन समाप्ति के साथ है।

यह एक समाधान नहीं है, लेकिन क्या होता है अगर आप एक फ़ाइल t.py इस कोड युक्त बनाने इसे चलाने, और फिर आप तो साथ 2+2 की तरह कुछ लिखते हैं, तो कुछ पाठ ?:

import sys; print(repr(sys.stdin.readline())) 

में टाइप भाग्य यह आपको दिखाएगा कि पाइथन दुभाषिया आपके उदाहरण में क्या प्राप्त कर रहा है और बदले में समस्या के बारे में कुछ संकेत दे सकता है।

तुम भी कमांड प्रॉम्प्ट पर इस कोशिश कर सकते हैं:

python -c "import sys; print(repr(sys.stdin.readline()))" 

यह आपको एक पंक्ति टाइप करें और उस एक पंक्ति का विवरण प्रदर्शित करने के लिए अनुमति देगा।

C:\Program Files\Python31>.\python 

यह एक बहुत अच्छा विचार वर्तमान निर्देशिका सॉफ्टवेयर स्थापना निर्देशिका के लिए सेट के साथ सॉफ्टवेयर को चलाने के लिए कभी नहीं है:

+2

इंजेनिक डायग्नोस्टिक तकनीक। हालांकि, नई लाइन 'इनपुट' और' raw_input' द्वारा छीन ली गई है। आपको 'sys.stdin.readline()' का उपयोग करना होगा। –

+0

यदि यह सिर्फ एक नई लाइन है तो समस्या का कारण नहीं बनना चाहिए, लेकिन मैं अभी भी सहमत हूं कि आपका सुझाव बेहतर लगता है। – Duncan

0

यह एक चिंता है। आप उन फ़ाइलों को बनाने का जोखिम चलाते हैं जो सॉफ़्टवेयर के चलते हस्तक्षेप करते हैं। जब आप बग और अजीब व्यवहार प्राप्त करना शुरू करते हैं, तो जिसके परिणामस्वरूप थ्रैशिंग स्थिति पूरी तरह से नियंत्रण से बाहर हो सकती है।

C: \ somewhere_else_with_no_spaces>

यह बेहतर है "c: \ प्रोग्राम फ़ाइलें \ python31 \ अजगर"

बेस्ट यह "प्रोग्राम फ़ाइलें" से बाहर रखने के लिए है।जब तक कि मैं गलत नहीं कर रहा हूं, सुझाए गए इंस्टॉलेशन फ़ोल्डर C:\Python31 होंगे जो कि अच्छा है क्योंकि जब भी आप "प्रोग्राम फाइल" का उपयोग करते हैं तो आपको अपने जैसे कोट्स की आवश्यकता नहीं होती है। AFAIK "प्रोग्राम फाइल" में सॉफ़्टवेयर रखने का कोई अच्छा कारण नहीं है।

कुछ निदान:

ए एक कमांड प्रॉम्प्ट विंडो खोलने।
बी टाइप करें: dir "c:\program files\python31"
सी। चरण बी से परिणाम को अपने प्रश्न के संपादन में कॉपी/पेस्ट करें यानी इसे एक टिप्पणी में न डालें।

अगर आपने उत्तर दिया (आपके प्रश्न के एक संपादन में) सवाल यह है कि किसी ने कीबोर्ड मैक्रोज़ के बारे में पूछा है ... ओवर-स्मार्ट कीबोर्ड की संभावना पर विचार करें, और कई आईएमई होने और "सही" " एक। साथ ही, क्या यह व्यवहार पाइथन के अलावा किसी भी सॉफ्टवेयर के साथ हो रहा है?

5

जब अजगर सहभागी और unbuffered चल जो 3.2 में फिक्सिंग के लिए निर्धारित है, एक ज्ञात समस्या है -, और पुराने संस्करणों में बैकपोर्ट किया जा सकता है देखने के http://bugs.python.org/issue11098

बुरा बात है, एक unbuffered मैं का उपयोग कर किया जा सकता है/हे इसे महसूस किए बिना। मेरे मामले में (पायथन 2.5.4 (आर 254: 67916)), मैंने कुछ समय पहले एक पर्यावरण चर सेट किया था जैसे कि पायथन हमेशा रन अनबफर (विंडोज़ पर, यह PYTHONUNBUFFERED = YES है, या जो भी खाली खाली स्ट्रिंग प्रतिस्थापित है हाँ के लिए) और फिर इसके बारे में भूल गए। Env.var को हटा रहा है। मेरे लिए समस्या हल हो गई।

तो यह इस पर्यावरण चर के लिए उपयुक्त जांच हो सकता है। यह डिफ़ॉल्ट रूप से सेट नहीं है।

0

मुझे एक ही समस्या का सामना करना पड़ रहा है, भले ही यह आपके जैसा नहीं हो सकता है, लेकिन डायग्नोस्टिक के लिए वैकल्पिक तरीका है, आपको हमेशा एक इतिहास फ़ाइल सेट करनी चाहिए।

enter image description here

मैं बाहर vim द्वारा कारण इतिहास फ़ाइल खोजने (या आप मामले vim में hexdump -C पर विचार हो सकता छिपा पात्रों से पता चलता नहीं है):

enter image description here

http://www.w3.org/International/questions/qa-bidi-controls के अनुसार:

आरएलएम और एलआरएम पात्र

यूनिकोड द्वारा प्रदान किए गए दो अन्य अदृश्य लेकिन गैर-एम्बेडिंग दिशात्मक नियंत्रण वर्ण आमतौर पर संबंधित मार्कअप नहीं होते हैं और या तो चरित्र या बचने वाले रूप में उपयोग किए जाने चाहिए। ध्यान दें कि वे कम समस्याग्रस्त हैं क्योंकि इन्हें अकेले उपयोग किया जाता है, को अन्य नियंत्रण वर्णों जैसे टेक्स्ट की श्रेणियों को सीमित करने के लिए जोड़ों में नहीं। क्योंकि मैं प्रत्यक्ष ऑनलाइन कोड (मुझे पता है यह, हालांकि सुरक्षा में खतरनाक है), जो छिपा RLM और LRM वर्ण हैं से कॉपी/पेस्ट

U+200E: LEFT-TO-RIGHT MARK 
U+200F: RIGHT-TO-LEFT MARK 

कारण है।

संबंधित मुद्दे