conda는 절대 네버 쓰지 말자. package 하나 다운로드 받는 것도 힘든데 굳이 쓸 필요가 없다. 안 그러면 썸네일의 저 꼬여버린 개발 환경이 될 수도 있다...
나는 웹개발과 데이터분석에 모두 관심이 있다. 웹개발에 필요한 library, 데이터 분석에 필요한 library를 모두 다운받았다. 그러다보니, 다음과 같이 팩키지 관리가 엉망진창이다.

따라서 이 두 가지 문제점을 모두 해결하고 싶었다.
나는 pyenv와 poetry를 사용한 목적은 세 가지였다.
1) Web 개발용 python과 Data analysis용 python을 분리시키고 싶었다.
2) Jupyter notebook 실행할 때 conda 4.8 이상 package manager로 설치하면 에러 대환장파티가 났다.
3) pypy interpreter가 C Python interpreter보다 적어도 5배는 더 빠르다는데, 테스트해보고 싶었다.
사실 데이터분석은 Google Colab으로 하는 게 편하다. 하지만 무거운 작업들은 로컬 컴퓨터로 돌리는 게 더 빠르다. 따라서 jupyter notebook을 사용하는 가상환경과 web 개발을 하는 가상환경을 분리할 필요성을 느꼈다.

일단 pyenv와 pyenv-virtualenv를 다운로드받는다
# pyenv, pyenv-virtualenv download
brew install pyenv
brew install pyenv-virtualenv
.zshrc 파일에 설정을 추가한다
# ~/.zshrc
# pyenv command
eval "$(pyenv init -)"
# pyenv-virtualenv command
eval "$(pyenv virtualenv-init -)"
그러면 어떤 파이선을 다운로드할 수 있는지 확인하고, 다운로드 받는다. 필자는 세 가지를 다운로드 받았다: 3.8.3, 3.7.7, pypy3.6-7.3.1
#check available python version list to download
pyenv install --list
# install selected python version to the local
pyenv install PYTHON-VERSION
웹개발용 가상환경, 데이터 분석용 가상환경, pypy 실험용 가상환경 세 가지를 만들어본다
#create virtual environment
pyenv virtualenv PYTHON-VERSION ENVIRONMENT-NAME
#check available virtual environments in local
pyenv virtualenvs
# DELETING VIRTUAL ENVIRONMENT
pyenv uninstall ENVIRONMENT-NAME
이 때 power10k를 업데이트 해줘야 virtual environment가 중복 표시 안 된다.
git -C ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/ themes/powerlevel10k pull
해당 설정 부분을 .p10k.zsh 파일에 추가한다.
# ~/.p10k.zsh
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_PYENV_PYTHON_VERSION:#$P9K_CONTENT}:+ $P9K_PYENV_PYTHON_VERSION}'
가상환경을 실행시켜본다
#activate virtual environment
pyenv activate ENVIRONMENT-NAME
#check available packages
pip list
#upgrade pip
pip install --upgrade pip
#GET OUT OF VIRTUAL ENVIRONMENT
pyenv deactivate
그러면 다음과 같이 표시된다.


특정 repository에 들어가면 virtual environment가 자동으로 실행되게 만들고 싶으면 다음과 같이 실행하면 된다.
pyenv local ENVIRONMENT-NAME

몇몇은 autoenv를 사용하기도 하는데, 현재 catalina OS에서 autoenv로 가상환경을 실행시킬 때 무한 반복 에러가 발생한다. 따라서 pyenv local 명령어로 특정 repository에 가상환경을 부여해주는 게 더 낫다.
위의 강연을 요약해보자면...
일단, pipenv는 느리다. pipenv를 사용해본 분들은 아마 이런 경험을 해보셨을 거다. 팩키지 10개를 다운로드받으면, 그 중 몇 개는 반드시 fail한다.

무엇보다 maintainer가 성실해보이지는 않는다. 위의 강연이 poetry와 pipenv를 잘 비교했는데, 강연자가 상사하게 문의한 issue에 그저 "no"라는 답변을 달았다고 한다...

그래서 poetry로 갈아탔다. Virtual environment 속에서 다음과 같이 실행했다.
data는 데이터 분석용이기 때문에, 해당 커멘드를 추가로 실행했다. pip install jupyter notebookpip install poetryweb은 웹개발용이기 때문에, poetry만 받았다.pip install poetryproject repository로 가서 poetry를 다음과 같이 사용하면 된다


이쯤 되면 rust의 cargo가 얼마나 대단한 지 알 수 있다.
후... 그래도 conda 없이 jupyter notebook을 사용할 수 있다는 점에서는 만족한다.
좋은글 정말 감사히 읽었습니다 맥카날리나에서 pyenv,pveny-virtualenv로 가상환경을 만들어서 파이썬작업을 해보려고 하는 코딩초보자입니다 자세한 사전정보가 부족해서 autoenv를 설치하는중에 iterm2와 터미널 모두 작동을 멈추게 된 에러가 발생하여 해결책을 찾아보려는데 저에게 맞는 해결책이 없어서 도움을 얻을 수 있을까 해서 댓글을 남깁니다.