0

この単純なコードを次のように実行しようとしています:

  • パイソン 2.7.2
  • ウィンドウズ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%にコピーすることを示しています。この環境変数が私のPCで正しく構成されておらず、ファイルがe:\pyreadlineconfig.iniにコピーされていることがわかりました。

正しいパスですが、代わりにc:\ users\usernameである必要があります。

于 2013-02-08T02:56:05.133 に答える