在升级到 lion 之前,我通过终端在 python shell 中完成了 tab 工作。关注 these instructions ,可以让选项卡完成工作。
自从升级到 Lion 后,我现在无法在 Python 的终端 session 中完成选项卡的工作。我已经按照上面的说明写信了,但还是不行。
Lion 中的 readline 模块有什么不同吗?连接到 'tab:complete' 选项似乎不再起作用。我想知道是终端忽略了readline,还是python本身。
Python 版本:2.7.1
编辑:
通过选项卡完成,我的意思是我可以执行以下操作:
# django
import MyModel
MyModel.objects.a[TAB] # will complete to all()
最佳答案
Apple 没有随 OS X 一起提供 GNU readline
。它确实提供了 BSD libedit其中包括一个 readline
兼容性接口(interface)。 Apple 提供的系统 Python 和来自 python.org 安装程序的 64 位/32 位 Python 是使用 libedit
构建的。问题是 libedit
支持的命令与 readline
支持的命令完全不同(例如,参见讨论 here )。传统的仅 32 位 python.org 安装程序确实使用 GNU readline
,就像 MacPorts 等其他一些用于 OS X 的 Python 的第 3 方分销商一样。很有可能您以前使用过这样的 Python,而不是最近的 Apple。除了修改 Django 之外,您确实有一些选择:您可以安装第三方替换 readline模块;或者您可以使用 GNU readline 附带的另一个 Python。但是,您不应该在 10.7 上使用 python.org 仅 32 位 Python,因为不幸的是,10.7 上的 Xcode 4 不再包含这些 Python 需要的 gcc-4.0
和 OS X 10.4u SDK使用 C 扩展模块构建和安装包。
将以下内容放在 python 启动文件中将为 libedit 界面和典型的 readline 模块启用选项卡完成。有关 python 启动文件的更多信息,see here
import readline
import rlcompleter
if 'libedit' in readline.__doc__:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
关于MacOS 上的 Python REPL 选项卡完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7116038/