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