【问题标题】:Installing ipython with readline on the mac在 mac 上使用 readline 安装 ipython
【发布时间】:2010-10-18 02:34:58
【问题描述】:

我在 Mac OS 10.5 和 python 2.5.1 上使用 ipython(我实际上想将 ipython 用于 2.6.1,但它似乎不可用?)

我通过 easy_install 安装了 ipython。它可以工作,但缺少 gnu readline(需要使用 ctrl-R 等很好地搜索命令行历史记录)

我发现 blog post 和其他消息来源说这可以通过

sudo easy_install -f http://ipython.scipy.org/dist/ readline

但是,这会导致 readline.c 中的构建错误,尤其是未声明的函数,例如 rl_compentry_func_trl_catch_signals

有人见过这些错误吗?有没有其他方法可以使用 readline 安装 ipython?

【问题讨论】:

标签: python macos readline ipython


【解决方案1】:

您可以使用 MacPorts 基本上通过一个命令来安装所需的一切。首先从http://www.macports.org/ 下载并安装 MacPorts。

然后只需在终端中执行以下操作: 1) sudo 端口 -v selfupdate
2) sudo port -v install py26-ipython

这将为您安装 python2.6、ipython for python 2.6 和 readline。启动 ipython 的命令将位于 /opt/local/bin/ipython2.6

【讨论】:

  • 遗憾的是,由于 macports 已经失宠,我认为这不再是理想的解决方案。如今,大多数人似乎更喜欢自制软件。
  • 是的,我同意。在我的辩护中,当我回答这个问题时没有自制软件。
  • 同意。这是一个很好的答案,我只是想为那些通过谷歌偶然发现这个问题的人提一下。
【解决方案2】:

“我实际上想将 ipython 用于 2.6.1”

它是可用的。我在 os x 上将它与 2.6.1 一起使用。您只需要安装官方的python 2.6.1 发行版,然后使用easy_install 安装ipython。

【讨论】:

    【解决方案3】:

    要在 Snow Leopard 或 Lion 上安装 ipython 而不使用 MacPorts,您可以这样做:

    sudo easy_install readline ipython
    

    (注意如果你使用“pip”安装readline,那么ipython就看不到readline库,不知道为什么)。

    编辑:

    如果您安装了 ipython,请使用

    将其删除
    sudo pip uninstall ipython
    

    pip uninstall ipython #for virtualenvs
    

    然后确保你已经安装了 readline 并重新安装了 iptyhon

    pip install readline ipython
    

    由于某些原因,如果在安装过程中没有 readline,它将在不支持 readline 的情况下自行安装,或者使用默认的 mac readline。

    【讨论】:

    • virtualenv 群上有一个关于 pip 问题的讨论。 (总结:pip不会把它的readline放在sys.path中不兼容的预装版本前面)groups.google.com/group/python-virtualenv/browse_thread/thread/…
    • 它现在可以工作了,如果已经安装了 ipython 它将无法工作。您可以添加您需要卸载 ipython。 Ipython 可能在没有 readline 或使用 mac readline 的情况下编译
    • @LoïcFaure-Lacroix 请随时相应地编辑我的答案。
    【解决方案4】:

    如果您不想使用端口,另一种选择。 注意:这不安全。

    照常安装ipythonreadline

    sudo easy_install -f http://ipython.scipy.org/dist/ readline ipython
    

    找到您的readline egg 的完整路径。对于 python 2.6,这可能是:

    /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/readline-2.5.1-py2.6-macosx-10.3-fat.egg
    

    使用您喜欢的文本编辑器编辑ipython

    vim `which ipython`
    

    在文件sys.exit的最后一行之前,插入:

    sys.path.insert(0,'PATH_TO_READLINE_EGG')
    

    保存并退出 (:wq)。

    检查 readline 是否正常工作:

    ipython
    

    【讨论】:

    • 我不使用 MacPorts(我更喜欢自制软件),这是适合我的解决方案。
    【解决方案5】:

    这对我有用(我使用的是 python 2.7,对于其他版本,您需要编辑):

    cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
    sudo mv readline.so readline.so.bak
    

    根据需要安装 readline(pip、homebrew、macports 等)

    pip install -U readline
    

    成功!它适用于virtualenv和virtualenvwrapper,无需修改ipython :)

    【讨论】:

    • 谢谢!基于此,我能够在 Snow Leopard 上修复我自行安装但 readline 损坏的 Py 2.7。
    • 也为我工作,最简单的方法。
    • sudo mv 步骤是唯一为我解决了 Mavericks 问题的方法。之后,我在我的 virtualenv 中为两者都做了 pip 卸载,然后是 'pip install readline ipython'。
    【解决方案6】:

    在 MacOS Mavericks 上唯一的工作方式是:

    1. 切换到你的 virtualenv workon myproject_name
    2. 删除readline和ipython(如果你之前安装过)pip uninstall readline ipython
    3. 只能通过 easy_install 安装 readline(pip - 没用!)easy_install readline
    4. 最后用 pip pip install ipython 安装 ipython

    它在我的 MacOS 上运行良好,并且经过了很长时间的测试。

    【讨论】:

    • 这是我在优胜美地找到的最简单的解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多