Homebrew가 pyenv 설치를 중단하지 못하도록 방지

Homebrew가 pyenv 설치를 중단하지 못하도록 방지

사용이 가능해요피엔브여러 Python 버전을 설치하고 전환할 수 있습니다. 이는 최신 버전이 아닌 Python 버전을 대상으로 하는 소프트웨어를 개발하고 테스트할 때 유용합니다. 이러한 Python 설치의 종속성 중 하나는 Brew에 의해 설치되는 readline입니다.

내가 발견한 문제는 Brew가 주기적으로 자체적으로 새로운 버전의 readline을 설치한다는 것입니다. 여러 버전의 readline이 시스템에 존재할 수 있지만 그 중 하나만 /usr/local/opt/readline에 심볼릭 링크되어 있습니다.

Brew가 readline의 새 버전으로 업그레이드하면 갑자기 Python이 ^[[A커서 키를 사용하여 줄 편집을 시도할 때처럼 텍스트를 뱉어내기 시작합니다. 그런 다음 명시적으로 시도하면 import readline다음과 같은 오류가 표시됩니다.

>>> import readline
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/********/.pyenv/versions/3.7.0/lib/python3.7/lib-dynload/readline.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /Users/********/.pyenv/versions/3.7.0/lib/python3.7/lib-dynload/readline.cpython-37m-darwin.so
  Reason: image not found

를 찾고 있습니다 /usr/local/opt/readline/lib/libreadline.7.dylib. 문제는 pyenv installPython을 빌드 할 /usr/local/opt/readline때 . 해당 파일이 아직 존재합니다! 그러나 Brew가 버전 8을 가리키도록 심볼릭 링크를 업데이트했기 때문에 이 경로에서는 더 이상 사용할 수 없습니다./usr/local/Cellar/readline/7.0.5lib/libreadline.7.dylib

내가 할 수있는brew switch readline 7.0.5 pyenv의 Python이 다시 작동합니다. 그러나 지금홈브루의파이썬은 거의 같은 방식으로 깨졌습니다. 이것들이 공존할 수 있는 합리적인 방법이 있을까요?그리고 또 갑자기 깨지지 않게다음에 Homebrew가 readline의 새 버전을 설치하면 어떻게 될까요?

답변1

/usr/local/opt/readline/lib/폴더 에서 readline 7을 찾을 수 없지만 libreadline.8.0.dylib. 이 솔루션으로 문제를 해결했습니다.

https://superuser.com/a/1411220

기본적으로 소프트 링크만 생성하면 됩니다.

sudo ln -s libreadline.8.0.dylib libreadline.7.dylib

관련 정보