Homebrew pyenv 安装错误 dyld:库未加载:/usr/local/opt/readline/lib/libreadline.7.dylib

Gor*_*ran 6 python macos homebrew libreadline pyenv

在 MacOS Mojave 上从 Homebrew 安装 pyenv 后,我在尝试安装任何 python 版本时遇到构建错误。

运行pyenv install任何版本时,构建都会失败并显示错误:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /usr/local/bin/awk
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

sen*_*rio 6

ln -sf /usr/local/opt/readline/lib/libreadline.8.0.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Run Code Online (Sandbox Code Playgroud)


Gor*_*ran 5

对我来说,解决方案是强制链接我在 下的 readline 8 lib /usr/local/opt/readline/lib/

> cd /usr/local/opt/readline/lib/
> ls
libhistory.8.0.dylib  libhistory.a          libreadline.8.dylib   libreadline.dylib
libhistory.8.dylib    libhistory.dylib      libreadline.8.0.dylib libreadline.a         pkgconfig
Run Code Online (Sandbox Code Playgroud)

由于我有较新版本的 readline 库,因此我尝试通过将其符号链接到它要查找的文件名来强制它找到我所拥有的版本。例如

> cd /usr/local/opt/readline/lib/
> ln -s libreadline.8.0.dylib libreadline.7.dylib
> ls
libhistory.8.0.dylib  libhistory.a          libreadline.7.dylib   libreadline.8.dylib   libreadline.dylib
libhistory.8.dylib    libhistory.dylib      libreadline.8.0.dylib libreadline.a         pkgconfig
Run Code Online (Sandbox Code Playgroud)

pyenv install x.y.z现在应该可以工作了(或者至少抛出一个不同的错误;)。