0

我正在尝试运行这个简单的代码:

  • Python 2.7.2
  • Windows 7的
  • 从 pip 安装的 pyreadline

    class HelloWorld(cmd.Cmd):
        """Simple command processor example."""
    
        FRIENDS = [ 'Alice', 'Adam', 'Barbara', 'Bob', 'Chris' ]
    
        def do_greet(self, person):
            "Greet the person"
            if person and person in self.FRIENDS:
                greeting = 'hi, %s!' % person
            elif person:
                greeting = "hello, " + person
            else:
                greeting = 'hello'
            print greeting
    
        def complete_greet(self, text, line, begidx, endidx):
            if not text:
                completions = self.FRIENDS[:]
            else:
                completions = [ f
                                for f in self.FRIENDS
                                if f.startswith(text)
                                ]
            return completions
    
        def do_EOF(self, line):
            return True
    
    if __name__ == '__main__':
        HelloWorld().cmdloop()
    

似乎自动完成不起作用。当我运行它并输入:

(Cmd) greet A<tab>

它没有给出自动补全建议,但应该给出“Alice Adam”。

但是,当我输入:

(Cmd) greet C<tab>

它正确地使用“Chris”自动完成。因此,这似乎与自动完成是否有多个匹配项有关。

有没有人有解释或知道如何解决这个问题?

谢谢!

编辑:删除了剩余的短语。

4

1 回答 1

0

好的,我想通了。pyreadlineconfig.ini 文件位于错误的目录中。

我遵循了在 Windows 上的 iPython 中不工作的模糊选项卡完成中的修复

它说将此文件复制到%HOMEPATH%。原来这个环境变量在我的电脑上配置错误,文件被复制到 e:\pyreadlineconfig.ini。

正确的路径,但应该是 c:\users\username。

于 2013-02-08T02:56:05.133 回答