pyenv 'Failed to activate virtualenv' 해결기

D0Lim·2021년 7월 1일
0
post-thumbnail

TL;DR

# (The below instructions are intended for common
# shell setups. See the README for more guidance
# if they don't apply and/or don't work for you.)

# Add pyenv executable to PATH and
# enable shims by adding the following
# to ~/.profile and ~/.zprofile:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

# Load pyenv into the shell by adding
# the following to ~/.zshrc:

eval "$(pyenv init -)"

# Make sure to restart your entire logon session
# for changes to profile files to take effect.

여기서 시키는대로 하면 됩니다. .*profile.*shrc 파일이 다름에 주의하세요!

해결기

금일, 오랜만에 기분전환도 해볼 겸 카페코딩을 하러 밖으로 나왔습니다.

그런데, 너무 더워서 땀을 삐질삐질 흘리며 나쁜 방향으로 기분전환을 해버렸네요...

그래도 카페 에어컨은 시원해서 다행이라고 안도하며 공부를 해보고자 m1 맥북에 개발환경 세팅을 시작해봅니다. 최근에 파이썬 머신러닝을 아예 처음으로 공부하기 시작해서 이것저것 개발환경을 세팅하기 시작했는데요. 데스크탑 WSL 2와 똑같이 pyenv를 설치하고, pyenv-virtualenv를 설치하고.. 그리고 virtualenv를 하나 만들고 activate를 시켰습니다. 그런데 띠용?

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

이런 에러를 뱉는 것이었습니다. 그래서 아 뭐야, shell에 로딩이 제대로 안됐다고? 하면서 확인을 해 봤는데, pyenv도 잘 실행되고 생각해보니 애초에 virtualenv를 만들 때 pyenv-virtualenv를 사용했으니 제대로 로딩된 것 같다는 생각이 들었습니다. 그래서 터미널을 재실행 하고, 맥을 재부팅하고 해봤는데도 문제가 사라지지 않더라구요.

그제서야 구글에 Failed to activate virtualenv. 라고 검색을 해보았습니다. 그리고 가장 상단에 나온 스택 오버플로우 에 들어가보았죠.

뭐시기.. 뭐시기... 슉 슈슉 슉... 일단 답변으로 가봅니다.

어라? 첫 답변을 보니 제가 아무 환경변수 세팅을 하지 않았다는 사실을 깨닫습니다. 그리고 황급히 .zsrhc

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

을 추가해봅니다. 그러니까 요상한 메시지들이 나옵니다.

WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.

오호라, 저 같이 도큐멘테이션도 제대로 안읽고 냅다 사용하려는 무지성 유저들이 꽤 있나 봅니다. 얌전히 pyenv init을 실행해봅니다.

# (The below instructions are intended for common
# shell setups. See the README for more guidance
# if they don't apply and/or don't work for you.)

# Add pyenv executable to PATH and
# enable shims by adding the following
# to ~/.profile and ~/.zprofile:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

# Load pyenv into the shell by adding
# the following to ~/.zshrc:

eval "$(pyenv init -)"

# Make sure to restart your entire logon session
# for changes to profile files to take effect.

이렇게 친절할 수가... 그대로 ~/.zprofile

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

를 넣고, ~/.zshrc

eval "$(pyenv init -)"

을 넣으니, 액티베이션이 잘 되는 것을 확인할 수 있었습니다..

오늘의 교훈

깝죽거리지 말자. 항상 겸손하자.

0개의 댓글