MacOS 上的 Python REPL 选项卡完成

标签 python macos readline

在升级到 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/

相关文章:

python - 手动安装python包

python - 无论结束子句如何,程序仍然关闭(Python)

macos - 如何在不使用 openssl 的情况下使用 OSX 10.7+ 进行非对称加密/解密?

phpmyadmin - 无法编辑 config.inc.php

java - 尝试将文本文件逐行加载到数组中,但数组保持为空,我做错了什么? (Java,安卓工作室)

python - 有没有一种方法可以将某些值的数据从另一个表插入到一个表中?

python - 用户上传文件到谷歌云存储时如何获取创建的文件名?

Git总是提示 "Are you sure you want to continue connecting (yes/no/[fingerprint])?"

c - GNU 阅读线 : how to clear the input line?

node.js - 如何在nodejs中使用异步获取同步readline或 "simulate"?