升级Mojave后,遇到Readline库错误。 Python 3.5需要Readline 7,但Brew仅安装Readline 8

时间:2019-02-25 15:17:46

标签: python homebrew macos-mojave pyenv libreadline

升级到MacOS Mojave之后,我使用Homebrew和Pyenv重建了Python开发环境。

  • 我首先更新了XCODE和我的SDK标头(https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035624)。

    sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
    
  • 使用自制软件,我安装了Pyenv,Readline和XZ。

    $ brew update
    $ brew install pyenv readline xz
    
  • 然后使用Pyenv安装了各种Python软件包:

    $ pyenv install 3.5.0
    $ pyenv install 2.7.10
    
  • Pyenv安装程序告诉我它正在使用Homebrew的readline。

    Installing Python-3.5.0...
    python-build: use readline from homebrew
    
  • 当我尝试运行Python程序时出现错误:

    ImportError: dlopen(/Users/me/.pyenv/versions/3.5.0/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so, 
    2): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
    Referenced from: /Users/me/.pyenv/versions/3.5.0/lib/python3.5/lib-dynload/readline.cpython-35m-darwin.so
    Reason: image not found
    
  • 在/ usr / local / opt / readline / lib中查找的所有内容都是版本8库。

    $ ls /usr/local/opt/readline/lib
    libhistory.8.0.dylib    libhistory.a        libreadline.8.0.dylib   libreadline.a       pkgconfig
    libhistory.8.dylib  libhistory.dylib    libreadline.8.dylib libreadline.dylib
    

目前我不知道是否应该: A)弄清楚如何通过自制程序安装readline v.7,或 B)以某种方式将pyenv更新为不使用自制软件的readline而是安装库本身,或者 C)其他。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您能够升级,此问题似乎已在 Python 3.7.2 中解决。我在使用Python 3.6.7和3.7.1时都遇到了同样的问题,并且无法通过自制程序完成对readline v.7的任何回滚,由于某种原因,它似乎并没有保留任何以前的版本