如何将标签完成添加到Python shell?

时间:2008-10-29 13:09:10

标签: python shell interpreter

使用python manage.py shell启动django应用程序时,我得到一个InteractiveConsole shell - 我可以使用Tab键完成等。

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应用程序的交互式控制台?

10 个答案:

答案 0 :(得分:186)

我可能已经找到了办法。

创建文件.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

这似乎有效。

答案 1 :(得分:34)

我认为django的功能类似于https://docs.python.org/library/rlcompleter.html

如果你想拥有一个非常好的互动翻译,请看一下 http://ipython.scipy.org/

答案 2 :(得分:26)

对于记录,本教程中介绍了这一点:http://docs.python.org/tutorial/interactive.html

答案 3 :(得分:7)

我使用ptpython。 https://github.com/jonathanslenders/ptpython/

ptpython是一个很棒的工具autocomplete shell cmd。 安装ptpython非常简单,使用pip工具

  

pip install ptpython

对于django shell,你应该导入django env,就像这样

  

导入os

     

os.environ.setdefault(“DJANGO_SETTINGS_MODULE”,“testweb.settings”)

相信我,这是最好的方式!!!

答案 4 :(得分:3)

看起来python3开箱即用了!

答案 5 :(得分:0)

在Python3中,默认情况下启用此功能。我的系统没有安装模块readline。我在Manjaro。我没有在其他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的任何创建/更改。

答案 6 :(得分:0)

我创建了一个更完美的.pythonrc.py,您可能会发现它很有用: https://gist.github.com/guyskk/6f3522e3d17135b470bf3d982c80cc01

答案 7 :(得分:0)

Windows10 Shell修复程序:

  • pip安装pyreadline
  • pip安装ipython [shell]

答案 8 :(得分:0)

是的。它内置于3.6。

fernanr@gnuruwi ~ $ python3.6
Python 3.6.3 (default, Apr 10 2019, 14:37:36)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.
Display all 318 possibilities? (y or 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.readv(                    os.st

答案 9 :(得分:-1)

对于旧版本(2.x),上述脚本的工作方式类似于charm:)

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