質問

Python の Cmd.cmd フレームワークをしばらくテストした後、どうすればよいかわからない問題に気づきました。さらに、私はこれが数時間前に機能していると信じているので(あるいは私が頭がおかしいだけです)、これはさらに奇妙です。

次のコード例は、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()

なぜこれが起こるのか、またはタブ補完を可能にするために何ができるか知っていますか?

役に立ちましたか?

解決

実際、Linux では Python 2 と 3 の両方で動作します。ただし、私の Python セットアップは readline サポートを使用してコンパイルされており、これは、 cmdドキュメント. 。Linux Python 3 がそれを使ってコンパイルされていないのではないかと思います。

残念ながら、readline は Unix 固有です。見る WindowsでのPythonタブ補完 Windows の他のオプションについては、こちらを参照してください。

他のヒント

私はここからpyreadlineモジュールをインストールした後、私はそれがWindows上で動作するようになった https://では、PyPI .python.org /は、PyPI / pyreadline / 2.0

MacではスタンドアロンGNU readlineのモジュールのがあります。
あなたはpip install gnureadlineでそれを得ることができます。
これは、Python 2.6、2.7、3.2および3.3でテストされています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top