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 шт):

Автор решения: stigsanek

Выяснилось, что в .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, все заработало корректно.

→ Ссылка