Pythonシェルにタブ補完を追加するにはどうすればよいですか?


125

を使用してdjangoアプリケーションを起動するとpython manage.py shell、InteractiveConsoleシェルが表示されます-タブ補完などを使用できます。

Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

を使用してpythonインタープリターを開始するだけpythonでは、タブ補完は提供されません。

誰かが私にインタラクティブコンソールを提供するためにdjangoが何をしているのか、またはdjangoアプリなしでインタラクティブコンソールを起動するために何をする必要があるのか​​教えてもらえますか?


1
Pythonで入力すると、>>>プロンプトが表示されますよね?それが対話型シェルです。あなたの質問は何ですか?
S.Lott、2008年

4
タブ補完は提供されません。それは問題。
ashchristopher 2008年

それを指定するように質問を更新してください。
Daryl Spitzer、

回答:


210

私はそれをする方法を見つけたかもしれません。

.pythonrcファイルを作成する

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

次に、.bashrcファイルに、

export PYTHONSTARTUP=~/.pythonrc

それはうまくいくようです。


2
これは、IPythonとbpythonが現在利用できないJythonで機能します。
Skylar Saveland 2014年

1
何らかの理由で、上記は「mountain lion」を搭載した古いMacでは機能しましたが、「el captan」を搭載した新しいMacでは機能しませんでした。私はsource ~/.bashrcそれをPythonインタープリターを開始する前に動作させるために毎回する必要があります。任意のヒント?
hi15

1
@hmiは統一してくださいあなた.bashrc.bash_profile、このページの下部に提案されているよう:joshstaiger.org/archives/2005/07/bash_profile_vs.htmlそれはまた、それらの間の差異に関する情報を提供します。それは問題を解決しないかもしれませんが、役立つかもしれません。
Dangercrow 2016年

@hmi /etc/bashrcではなく、に入れてみてください~/.bashrc

参考までに-私はおそらくStackOverflowの他の何よりもこの回答に何度も戻ってきたので、ありがとう。
timmins



10

私はptpythonを使用しています。 https://github.com/jonathanslenders/ptpython/

ptpythonは素晴らしいツールオートコンプリートシェルcmdです。ptpythonのインストールは非常に簡単で、pipツールを使用します

pipインストールptpython

djangoシェルの場合は、このようにdjango envをインポートする必要があります

OSをインポート

os.environ.setdefault( "DJANGO_SETTINGS_MODULE"、 "testweb.settings")

私を信じて、これがあなたへの最良の方法です!!!


5

windows10シェルの修正:

  • pipインストールpyreadline
  • ピップインストールipython [シェル]


1

Python3では、この機能はデフォルトで有効になっています。システムにモジュールがreadlineインストールされていません。私はマンジャロにいます。他のLinuxディストリビューション(エレメンタリー、ubuntu、mint)では、このタブ補完の問題に直面していませんでした。

pipモジュールをインストールした後、インポート中に次のエラーがスローされました-

ImportError: libncursesw.so.5: cannot open shared object file: No such file or directory

これを解決するために、私は

cd /usr/lib ln -s libncursesw.so libncursesw.so.5

これにより、インポートエラーが解決されました。そして、それはまた、任意の作成/変更することなく、PythonのREPLでのタブ補完をもたらした.pythonrc.bashrc


0

はい。3.6に組み込まれています。

fernanr @ gnuruwi〜$ python3.6 Python 3.6.3(デフォルト、Apr 10 2019、14:37:36)[GCC 4.8.5 20150623(Red Hat 4.8.5-16)] Linux上の場合「help」、「copyright詳しくは、「、クレジット」または「ライセンス」をご覧ください。

os osをインポートします。318の可能性をすべて表示しますか?(yまたはn)os.CLD_CONTINUED os.O_RDONLY os.ST_NOEXEC os.environ os.getpid(os.readlink(os.spawnvpe(os.CLD_DUMPED os.O_RDWR os.ST_NOSUID os.environb os.getppid(os。 .st


-1

古いバージョン(2.x)の場合、上記のスクリプトはチャームのように機能します:)

fernanr@crsatx4 ~ $ cat .bashrc | grep -i python
#Tab completion for python shell
export PYTHONSTARTUP=~/.pythonrc
fernanr@crsatx4 ~ $ . ~/.bashrc
fernanr@crsatx4 ~ $ echo $?
0
fernanr@crsatx4 ~ $ python2
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.
Display all 249 possibilities? (y or n)
os.EX_CANTCREAT             os.O_WRONLY                 

返信に "〜/ .pythonrc"のコンテンツが含まれていないようです
MadMike
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.