Python の Cmd.cmd によるタブ補完
-
20-09-2019 - |
質問
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でテストされています。