如何向 Python shell 添加选项卡补全?

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

93904 次浏览

我觉得姜戈会做一些类似 https://docs.python.org/library/rlcompleter.html的事情

如果你想拥有一个真正好的交互式翻译,可以看看 IPython .

我可能找到办法了。

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

看起来有用。

根据记录,这在教程: http://docs.python.org/tutorial/interactive.html中有介绍

我使用 Ptpython-这是一个奇妙的工具自动完成外壳 cmd。

安装 ptpython 非常简单,使用 pip 工具

pip install ptpython

对于 django shell,应该导入 django env,如下所示

import os


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

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

看起来蟒蛇3把它从盒子里拿出来了!

在 Python3中,这个特性是默认启用的。我的系统没有安装 readline模块。我在 Manjaro。在其他 Linux 发行版(基础版、 ubuntu 版、崭新版)中,我没有遇到这种选项卡补全问题。

pip安装模块之后,在导入时,它抛出了以下错误-

不能打开共享对象文件: 没有这样的文件或目录

为了解决这个问题,我跑

Cd/usr/lib Ln-s libncurses. so libncurses. so. 5

这解决了导入错误。而且,它还在 python repl 中引入了 tab 补全,而没有对 .pythonrc.bashrc进行任何创建/更改。

修复 Windows10 shell:

pip install pyreadline3  # previously, pyreadline but that package was abandoned
pip install ipython

是的,内置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

对于较老的版本(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