2009-12-21 7 views
5

के साथ टैब पूर्णता पाइथन में Cmd.cmd ढांचे के साथ थोड़ी देर के परीक्षण के बाद, मैंने एक समस्या देखी जो मुझे नहीं पता कि मुझे क्या करना है। इसके अलावा मुझे विश्वास है कि यह कुछ घंटों पहले काम कर रहा है (या मैं सिर्फ पागल हूं), इसलिए यह और भी अजीब है।पायथन के सीएमडी.cएमडी

मेरे पास निम्न उदाहरण कोड है, जो विंडोज और लिनक्स सिस्टम दोनों पर परीक्षण किया गया है (इसलिए यह विंडोज़ समस्या नहीं है), लेकिन टैब पूर्णता बस काम नहीं करती है।

यह Linux सिस्टम पर काम अगर मैं ठीक उसी अजगर 2 में कोड का उपयोग करता है (Windows एक पर नहीं है, हालांकि)

import cmd 
class Shell (cmd.Cmd):  
    def do_test (self, params): 
     print('test: ' + params) 

    def do_exit (self, params): 
     return True 

    def do_quit (self, params): 
     return True 

if __name__ == '__main__': 
    x = Shell() 
    x.cmdloop() 

क्या आप जानते हैं कि ऐसा क्यों होता है, या मैं क्या कर सकते हैं , टैब पूर्ण करने के लिए संभव है?

+0

क्या आपने पूरा_नाम किया है? –

+2

'पूर्ण_एक्सवाई' फ़ंक्शन तर्कों को पूरा करने के लिए हैं (इसलिए जब मैं 'test f' दर्ज करता हूं तो यह मुझे' test foobar' 'प्रदान कर सकता है, लेकिन आदेशों को पूरा करने से सभी उपलब्ध' do_XY' फ़ंक्शंस से स्वचालित रूप से उत्पन्न होता है। साथ ही जब मैं टैब दबाता हूं, तो यह केवल कमांड लाइन पर एक टैब डालता है, जबकि कोई संगत पूरा होने पर कुछ भी नहीं होना चाहिए (क्योंकि फ़ंक्शंस तब खाली सूची लौटाते हैं)। – poke

उत्तर

5

यह वास्तव में मेरे लिए पाइथन 2 और 3 दोनों पर लिनक्स पर काम करता है। हालांकि, मेरे पायथन सेटअप को रीडलाइन समर्थन के साथ संकलित किया गया था, जिसके लिए इसे cmd documentation पर स्वचालित होना आवश्यक है। मुझे संदेह है कि आपके लिनक्स पायथन 3 को इसके साथ संकलित नहीं किया गया था।

दुर्भाग्यवश, रीडलाइन यूनिक्स-विशिष्ट है। विंडोज़ पर अन्य विकल्पों की चर्चा के लिए python tab completion in windows देखें।

+0

तो इस मामले में डेवलपर केवल उपयोगकर्ता को अपने पायथन सेटअप को रीडलाइन समर्थन (कमांड पूर्ण होने के अपने संस्करण को लागू करने के अलावा) को संकलित करने की अनुशंसा कर सकता है? – Dennis

2

मैं इसे खिड़कियों पर काम करने के लिए के बाद मैं मैक पर यहाँ https://pypi.python.org/pypi/pyreadline/2.0

+0

मेरे लिए काम करता है! (पायथन 2.7, डब्ल्यू 8 एक्स 64) – nergeia

0

से pyreadline मॉड्यूल स्थापित है Stand-alone GNU readline module मिला है।
आप इसे pip install gnureadline के साथ प्राप्त कर सकते हैं।
इसका परीक्षण पायथन 2.6, 2.7, 3.2 और 3.3 के साथ किया गया है।

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