Завершение табуляции с помощью Python's Cmd.cmd - PullRequest
6 голосов
/ 22 декабря 2009

После некоторого тестирования с использованием Cmd.cmd в Python я обнаружил проблему, с которой я не знаю, что делать. Кроме того, я считаю, что это работало несколько часов назад (или я просто сумасшедший), так что это еще более странно.

У меня есть следующий пример кода, протестированный на системах Windows и Linux (так что это не проблема Windows), но завершение табуляции просто не работает.

Если я использую точно такой же код в Python 2, он работает в системе Linux (но не в 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()

Знаете ли вы, почему это происходит, или что я могу сделать, чтобы завершить вкладку?

Ответы [ 3 ]

5 голосов
/ 12 февраля 2010

Это на самом деле работает для меня на Linux как на Python 2, так и на 3. Однако моя установка на python была скомпилирована с поддержкой readline, которая требуется для того, чтобы она была автоматической согласно документации cmd . Я подозреваю, что ваш Linux Python 3 не был скомпилирован с ним.

К сожалению, readline специфичен для Unix. См. завершение вкладки Python в Windows для обсуждения других параметров в Windows.

4 голосов
/ 15 июня 2013

Я установил его на Windows после того, как установил модуль pyreadline отсюда https://pypi.python.org/pypi/pyreadline/2.0

0 голосов
/ 18 декабря 2015

На Mac есть автономный модуль readline GNU .
Вы можете получить это с pip install gnureadline.
Он был протестирован с Python 2.6, 2.7, 3.2 и 3.3.

...