如何将制表符完成添加到Python Shell?


125

使用启动django应用程序时python manage.py shell,我得到一个InteractiveConsole shell-我可以使用制表符补全等。

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,

4
它不提供制表符补全。那就是问题所在。
ashchristopher,

请更新您的问题以指定。
达里尔·斯皮策

Answers:


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
这适用于Jython,其中IPython和bpython当前不可用。
Skylar Saveland 2014年

1
出于某种原因,以上内容适用于我的旧Mac和“山狮”的Mac,但不适用于新的Mac和“ el captan”的Mac。source ~/.bashrc在启动python解释器之前,我需要每次使其工作。有小费吗?
hi15

1
@hmi尝试按照页面底部的建议统一您的.bashrc.bash_profilejoshstaiger.org/archives/2005/07/bash_profile_vs.html它还提供了有关两者之间差异的信息。它可能无法解决问题,但可能会有所帮助。
Dangercrow '16

@hmi尝试将其放入/etc/bashrc,而不是~/.bashrc
声音

仅供参考-与StackOverflow上的其他答案相比,我可能返回此答案的次数更多,所以谢谢。
timmins



10

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

ptpython是一个很棒的工具自动完成外壳cmd。安装ptpython非常简单,使用pip工具

pip安装ptpython

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

导入操作系统

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

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


5

修复Windows10 Shell:

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


1

在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中的制表符完成,而没有对.pythonrcand的任何创建/更改.bashrc


0

是。它内置于3.6。

fernanr @ gnuruwi〜$ python3.6 Python 3.6.3(默认,Apr 10 2019,14:37:36)[Linux上的GCC 4.8.5 20150623(Red Hat 4.8.5-16)]键入“ help”,“ copyright ”,“信用”或“许可证”以获取更多信息。

导入操作系统。显示所有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.getppid( .st


-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                 

您的回复似乎缺少“〜/ .pythonrc”的内容
MadMike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.