macOS가 pyenv 버전 2.77을 사용해도 시작된 문제 해결
이번에 pyenv에 새 버전의python을 설치했지만 맥OS 표준의 2.7.17은 이미 시작 문제를 해결했기 때문에 먼저 적어 두었습니다.
컨디션
현상.
pyenv에서version과versions가 올바르게 실행된 것처럼 보이지만 글로벌에서는 3.10.1을 지정해도 시작은 2.717로 바뀌었다.
iMac20-27:~ paraches$ pyenv versions
system
* 3.10.1 (set by /usr/local/var/pyenv/version)
3.7.4
3.7.4/envs/PyCharm
3.8.3
3.9.4
PyCharm
iMac20-27:~ paraches$ pyenv version
3.10.1 (set by /usr/local/var/pyenv/version)
iMac20-27:~ paraches$ python -V
Python 2.7.17
해결책
.zshrc에
eval "$(pyenv init --path)"..zshrc
export PYENV_ROOT=/usr/local/var/pyenv
eval "$(pyenv init -)"
eval "$(pyenv init --path)"
이렇게 되면 자신의 환경에서 글로벌로 설정된python이 시작됩니다.iMac20-27:~ paraches$ python -V
Python 3.10.1
다음은 문제를 해결할 때의 기록이다.문제 해결 기록
먼저 pyenv의 구조를 확인하세요.
How It Works를 볼 때 MacOS가 명령을 실행할 때 PATH의 왼쪽에서 순서대로 명령의 위치를 찾기 때문에 pyenv는 시스템의pythn을 찾기 전(왼쪽)에 pyenv를 가리키는
shims의 경로$(pyenv root)/shims를 삽입하여 명령을 가로로 찾습니다.따라서 PATH를 확인합니다.
iMac20-27:~ paraches$ pyenv root
/usr/local/var/pyenv
iMac20-27:~ paraches$ echo $PATH
/Users/paraches/.rbenv/shims:/Users/paraches/.pyenv/shims:/Users/paraches/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
pyenv의 루트는 /usr/local/var/pyenv이지만 /usr/local/var/pyenv/shims가 없다.대체적으로
/Users/paraches/.pyenv/shims가 있지만 자신의 시스템에/Users/paraches/.pyenv/shims의 디렉터리가 없다.그래서 이번 문제의 원인은 PATH가 통과하지 못했기 때문이다.
.zshrc。소개 내용
그러면 pyenv의 PATH 스크립트를 어떻게 설정해야 좋을까요?
위쪽을 보면 맥OS에 zsh가 있는 경우 아래 명령을 실행하면 기록됩니다.
이건zprile에서
eval "$(pyenv init --path)".zshrc에만 eval "$(pyenv init -)".먼저 각자 잘 썼는지 확인한다.
.zprofile
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
.zshrcexport PATH=$HOME/.nodebrew/current/bin:$PATH
README의 거리가 되지 않았습니다.. zshrc에서
pyenv init -를 포함하는 줄을 삭제하고 두 명령을 실행합니다.및 zprofilezshrc를 고칩니다..zprofile
export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
.zshrcexport PATH=$HOME/.nodebrew/current/bin:$PATH
eval "$(pyenv init --path)"
새 터미널 확인 동작을 엽니다.export PYENV_ROOT=/usr/local/var/pyenv
eval "$(pyenv init -)"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
안돼...PATH 확인해 볼게요.
iMac20-27:~ paraches$ python -V
Python 2.7.17
부터 shims까지의 PATH는 여전히 /Users/paraches/.pyenv/shims였다.pyenv init--path란?
그래서 여기 PATH와 관련된
pyenv init --path 뭘 하고 있는지 확인해 보자.pyenv의 Advanced Configuration 항목에 표시됩니다.
이 명령을 사용하여
shims에 대한 경로를 설정할 수 있습니다.지령을 해 보세요.
iMac20-27:~ paraches$ echo $PATH
/Users/paraches/.rbenv/shims:/Users/paraches/.pyenv/shims:/Users/paraches/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
는 PATH에 실제 shims에 추가하는 스크립트를 보여줍니다.원래는zprofile로 읽은
eval "$(pyenv init --path)" 명령은 shims 경로로 설정해야 하는데, 왜 작동하지 않는지...해봐.zprofile에서
pyenv init --path 실행할 때 export PATH="Users/paraches/.pyenv/shims:${PATH}" 표시됩니다.아니오usr/local/var/pyenv/shims.왜?pyenv init -에서 pyenv의 루트를 설정하시겠습니까?그러니먼저안하면 안돼?그래서그만 써.zshrc에
eval "$(pyenv init --path)"를 추가합니다..zshrc
iMac20-27:~ paraches$ pyenv init --path
export PATH="/usr/local/var/pyenv/shims:${PATH}"
새 터미널을 시작하고 확인합니다.export PYENV_ROOT=/usr/local/var/pyenv
eval "$(pyenv init -)"
eval "$(pyenv init --path)"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
글로벌에 설정된 3.10.1이 시작됩니다!PATH 확인해 볼게요.
iMac20-27:~ paraches$ python -V
Python 3.10.1
잘 넣었다/usr/local/var/pyenv/shims.아직 남아있어서
/Users/paraches/.pyenv/shims 징그러워.zprofile의 eval "$(pyenv init --path)" 를 미리 삭제합니다.새 터미널 확인을 다시 시작합니다.
iMac20-27:~ paraches$ echo $PATH
/Users/paraches/.rbenv/shims:/usr/local/var/pyenv/shims:/Users/paraches/.pyenv/shims:/Users/paraches/.nodebrew/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
이렇게 /Users/paraches/.pyenv/shims 사라졌어요.최후
왜?zprofile 실행
eval "$(pyenv init --path)" 으로 정확한 경로를 표시하지 않는 것은 수수께끼입니다. 어쨌든.zshrc에 모두 쓰면 작동합니다.결국, 나는 pyenv를 설치할 때 무엇을 했는지 생각했다.앞으로는 묵인과는 다른 일을 할 때 했던 일을 잘 이해하고 했던 일을 명심하겠습니다.
Reference
이 문제에 관하여(macOS가 pyenv 버전 2.77을 사용해도 시작된 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/paraches/articles/pyenv_zshrc_path텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)