ipdb

2013-02-27 237 views
14

के लिए आईपीथन टैब पूर्णता प्राप्त करें मेरे पास IPython(0.13.1) और ipdb(0.7) स्थापित है, मैंने अपनी स्क्रिप्ट में import ipdb;ipdb.set_trace() लाइन डाली और python my_script.py चलाया। अब मैं आईपीडीबी प्रॉम्प्ट में हूं और कुछ स्वतः पूर्ण (उदा। एक नंगे टैब) है, लेकिन जब मैं आईपीथन में प्रवेश करता हूं तो यह स्वतः पूर्ण होने जैसा नहीं होता है। आईपीडीबी प्रॉम्प्ट requests. में <tab> (आयात के बाद) मुझे आईपीथन में विशेषताओं की एक सूची नहीं देता है। आईपीडीबी के साथ आईपीथॉन में वही टैब पूरा करने के लिए मैं कैसे प्राप्त करूं?ipdb

बीटीडब्ल्यू, जब मैं python -m ipdb my_script.py चलाता हूं तो टैब पूर्णता आईपीथॉन की तरह ही काम करती है लेकिन इसका नकारात्मक पक्ष यह है कि यह import ipdb;ipdb.set_trace() लाइन के बजाय पहली पंक्ति से डीबगर शुरू करता है।

+2

यह ओएस एक्स पर आईपी एक्स पर भी होता है जिसमें आईपीथॉन और आईपीडीबी पाइप के माध्यम से स्थापित होता है और easy_install (वर्चुअलएन्व के अंदर सभी) के माध्यम से स्थापित किया जाता है। आप जिस पर्यावरण का उपयोग कर रहे हैं, जिससे हम इसे कम कर सकते हैं? – Beau

+1

मैं 'उबंटू 12.04', आईपीथॉन और आईपीडीबी का उपयोग कर पाइप के माध्यम से भी स्थापित कर रहा हूं। समस्या आभासी वातावरण के बाहर के साथ ही अंदर होती है। मुझे टैब पूर्णता मिलती है, लेकिन केवल अंतर्निहित फ़ंक्शन/कीवर्ड (जैसे कि जब मैं अपने कोड में 'dic = {}' बनाता हूं तो 'ipdb; ipdb.set_trace()' के माध्यम से डीबगिंग में जाएं और 'di' टाइप करें, दबाएं 'टैब' मैं केवल' dict (',' dir ('और' divmod ('। 'मैं' dic' नहीं देख सकता।) – Bentley4

+0

यह वही है जो मैं देखता हूं - बिल्टिन के लिए पूरा करना लेकिन स्थानीय या मॉड्यूल नहीं। – Beau

उत्तर

3

easy_install readline मदद करता है?

+0

के साथ तोड़ता हूं तो यह काम नहीं करता है। यह वास्तव में ओएसएक्स –

6

मेरे पास ipython==0.13.2 और ipdb==0.7 का उपयोग Python 2.7.5 वर्चुअलनेव के अंदर मेरे मैक पर एक ही घटना थी। जब मैंने डीबग करने का प्रयास किया, तो मेरे पास बिल्टिन के लिए टैब पूर्णता थी, लेकिन मौजूदा दायरे में चर के लिए नहीं। मैंने पाया, कि मेरे पास मेरे घर फ़ोल्डर (http://docs.python.org/2/library/pdb.html#id2) में स्थित कस्टम .pdbrc था। मैंने सभी चीजों को टिप्पणी करने के बाद, टैब पूर्णता फिर से काम किया।

मैं नहीं जानता कि कब और क्यों मैं इस फ़ाइल जोड़ा है, लेकिन यह है कि क्या में था है:

# See http://docs.python.org/2/library/pdb.html#id2 for the structure of this file. 
import pdb 

# 'inspect x' will print the source code for a method, class or function. 
alias inspect import inspect;print inspect.getsource(%1) 
alias i import inspect;print inspect.getsource(%1) 
# 'help x' opens the man-style help viewer from the interpretter on an object 
alias help !print help(%1) 
alias h !print help(%1) 
# For ordinary Python objects, ppo will pretty-print members and their values. 
alias ppo pp %1.__dict__ 
# ppio runs ppo over a sequence of objects 
alias ppio pp [a.__dict__ for a in %1] 

# This tries to enable tab-completion of some identifiers. 
!import rlcompleter 
!pdb.Pdb.complete = rlcompleter.Completer(locals()).complete 

# Taken from https://gist.github.com/1125049 
# There are a couple of edge cases where you can lose terminal 
# echo. This should restore it next time you open a pdb. 
!import termios, sys 
!termios_fd = sys.stdin.fileno() 
!termios_echo = termios.tcgetattr(termios_fd) 
!termios_echo[3] = termios_echo[3] | termios.ECHO 
!termios_result = termios.tcsetattr(termios_fd, termios.TCSADRAIN, termios_echo) 

इसके अलावा अनुसंधान क्या वहाँ में टैब-पूरा होने टूट जाता है की जाँच करने की जरूरत है ...

+0

में आपकी मदद करता है। आपने मेरा दिन बनाया। यह' .pdbrc' मेरा घर फ़ोल्डर! –

1

मैं Ubuntu 14.04 पर एक ही समस्या थी और इसके साथ तय हो गया:

apt-get install libncurses5-dev

pip install --upgrade readline

+0

उबंटू 16.04 \ o/ –

2

मैं एक ही समस्या थी और मैं के साथ यह तय हो:

sudo pip install --upgrade ipdb ipython readline 

आप readline स्थापित libncurses5-dev @ musashi14 के रूप में सुझाव स्थापित करने के लिए सुनिश्चित करें कि नहीं है, तो।

+0

पर भी काम करता है लिनक्स टकसाल 18.2 पर पूरी तरह से काम करता है – Bug