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.)