5671


Python3のインタラクティブシェル上で補完を有効にしたいのですが、どうすればいいのでしょうか?  
Ctrl-nで補完がしたいのですが、PYTHONSTARTUPで指定したファイルに

[code]

    
    import readline
    import rlcompleter
    
    readline.parse_and_bind("\C-n: complete")
    
    
[/code]

としてもインタラクティブシェル上で補完されせん。

OSはOS X Yosemiteです。


CC BY-SA 3.0
2015-01-31T07:12:39.967
5655
2015-02-11T13:39:18.547
5246
question
python
Python3のインタラクティブシェル上での補完を有効にする


Python 3.4 では、 readline が利用可能であれば、 PYTHONSTARTUP を使わなくてもデフォルトで補完機能が有効になっています。

しかし、 Mac ではシステムが持ってる readline が GNU readline ではなく libedit になっている関係で、標準ライブラリの
readline が機能しません。

Python のインストール方法を問わず利用できる方法として、 Python が持っているインタラクティブシェルよりも高機能な ipython
を利用する手があります。

Python 本体のインタラクティブシェルの補完機能を有効にしたい場合は、 Python のインストール方法ごとに、以下のような手段があります。

## Homebrew

`brew install python3` する前に `brew install readline` しておけば、 GNU readline
が使われます。

## MacPorts

`ports install py34-readline` で GNU readline が利用できます。

## pyenv

Homebrew で readline をインストールしてあれば、自動的にそれが利用されます。

## その他

IPython が利用してる方法で、標準ライブラリの readline と別に GNU の readline をインストールしてそれを使うことができます。

`pip install gnureadline` しておいて、 PYTHONSTARTUP で指定するファイルに次のように書いておきます。
(readline ではなく gnureadline モジュールを利用していることに注意)

[code]

    import gnureadline
    import rlcompleter
    gnureadline.parse_and_bind('tab: complete')
    
[/code]


CC BY-SA 3.0
2015-01-31T20:02:49.290
5671
2015-01-31T20:02:49.290
3019
5655
answer


補完機能を充実させたい場合には標準の対話シェルの代わりにIPythonを使うのも手です。homebrewでpython3をインストール(場合によってはpyenvを導入)して`pip
install ipython`すればインストール補完が有効な状態で使えます。


CC BY-SA 3.0
2015-02-11T13:39:18.547
6326
2015-02-11T13:39:18.547
8215
5655
answer