Pyenv не обрабатывает разные patch-версии python
Я использую pyenv 2.3.35 на MacOS Sonoma 14.3 (чип M2), установленный через brew.
Я выполнил pyenv install 3.8.18, далее, находясь внутри папки /Users/user/xxx/yyy/Projects выполнил pyenv local 3.8.18. В результате в папке запускался python 3.8.18.
Через пару недель мне также понадобился python 3.8.17. Я выполнил pyenv install 3.8.17, далее, находясь внутри уже другой папки /Users/user/zzz/Projects выполнил pyenv local 3.8.17. Теперь когда я запускаю pyenv versions, то получаю 3 версии: 3.8.17, 3.8.18, system. Указано, что выбрана версия 3.8.17, однако когда я выполняю python --version, то получаю версию 3.8.18.
Я выполнил pyenv uninstall 3.8.18. В результате у меня осталось 2 версии: 3.8.17, system. Я снова запускаю pyenv versions внутри /Users/user/zzz/Projects и получаю, что выбрано 3.8.17, однако, когда я выполняю python --version, то получаю ошибку:
Library not loaded: /Users/user/.pyenv/versions/3.8.18/lib/libpython3.8.dylib
Referenced from: <120C8B80-012B-3016-9CC7-6717BDFDA264> /Users/user/.pyenv/versions/3.8.17/bin/python3.8
Reason: tried: '/Users/user/.pyenv/versions/3.8.18/lib/libpython3.8.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/user/.pyenv/versions/3.8.18/lib/libpython3.8.dylib' (no such file), '/Users/user/.pyenv/versions/3.8.18/lib/libpython3.8.dylib' (no such file)
Я пытался сделать pyenv rehash, но это не решает проблему. Чтобы все заработало нужно удалить 3.8.17 и установить заново.
Но я не понимаю, почему 2 версии, которые отличаются только номером патча не работают вместе и удаление одной версии вызывает ошибку у другой.
Если я использую версии, различающиеся минорными номерами (например, 3.8.x и 3.11.x), то все работает корректно.
Я использую zsh и в файле .zshrc установил настройки согласно документации pyenv.
Ответы (1 шт):
Выяснилось, что в .zshrc было:
export LDFLAGS="-L/opt/homebrew/opt/[email protected]/lib -L${HOME}/.pyenv/versions/3.8.18/lib"
Убрав -L${HOME}/.pyenv/versions/3.8.18/lib, все заработало корректно.