PyEnv + Anaconda
개발환경은
- Ubuntu 16.04 or later
- Windows 7 or later
- macOS 10.12.6 (Sierra) or later (no GPU support)
- Raspbian 9.0 or later
pyenv 와 pyenv-virtualenv 기반으로 Anaconda 를 사용하려고 한다. pyenv로 배포본을 관리를 하고, pyenv-virtualenv와 conda 환경의 가상환경을 이용한다.
- pyenv-Anaconda 환경
- ananconda 와 miniconda
1. pyenv - Anaconda 설치
설치할 anaconda 버전을 확이한다.
1 | $ pyenv install -l |grep anaconda |
anaconda 를 설치한다 - 시간이 많이 걸린다.
1 | $ pyenv install anaconda3-5.3.1 |
anaconda3-5.3.1 버전을 전역에서 사용하도록 한다.
1 | $ pyenv global anaconda3-5.3.1 |
global로 지정하고 버전을 확인해 보면
1 | $ pyenv versions |
일반적으로 Anaconda 만을 사용한다면 설치후 사용자 쉘 환경에서 conda 를 사용하기 위해서 환경변수를 초기화 해야 하는데 다음 명령으로 실행한다.
1 | $ conda init bash |
위 명령은 아래 환경 변수가 작용해서 conda 의 가상환경을 다루는 쉘 스크립을 실행해 준다.
1 | NACONDA_HOME=/Users/who/anaconda3 |
쉘을 다시 열면 쉘 프롬프트가 변경된다.
1 | (base) qkboo@ ~$ |
pyenv 기반 Anaconda 사용
그런데 pyenv 에서 다른 배포본과 Ananconda 를 같이 사용한다면 conda 초기 환경이 아주 불편할 수 있어서 아래 같이 conda 가상환경 시작을 불가능하게 해야 한다.
init conda, the following command write scripts into your shell init file automatically
1 | conda init |
보통 conda init 를 해주면 쉘 스크립의 마지막 위치에 삽입된다. 그러므로 .bash_profile
에 있는 pyenv 초기화가 항상 마지막에 실행되도록 하자.
1 |
pyenv 와 anaconda 환경의 전환 정리
Examples of managing virtual environments.
1 | # virtual environments from pyenv |
1 | # virtual environments from conda |
1 |
1 |
anaconda 패키지와 환경관리를 할 수 있는 conda 명령어 몇가지를 소개
1 | // 아나콘다의 버전 확인 |
conda에서 개발 준비하기
Anaconda 설치가 완료되면 conda 명령으로 TensorFlow를 사용할 환경을 구성하고 사용해 보자.
가상환경 생성
1 | $ conda create -n tensorflow_env |
또한 python=
인자로 파이썬 버전을 지정할 수 있다.
1 | $ conda create -n tensorflow python=3.8 |
현재 생성한 가상환경을 확인해 보자,
1 | (base)$ conda env list |
새로만든 conda 가상환경을 활성화 한다.
1 | $ conda activate tensorflow_env |
가상환경에서 Jupyter Notebook 을 설치한다.
jupyter notebook 설치
활성화한 가상환경에서 Jupyter Notebook 을 설치한다.
1 | (tensorflow_env)$ conda install jupyter notebook |
필요시 nb-extension 설치
1 | (tensorflow_env)$ conda install -c anaconda-nb-extensions nb_conda |
2. anaconda & miniconda 복합환경
현재 시스템에 pyenv로 파이썬 환경이 anaconda, miniconda 그리고 python 3.9 등이 중복되어 설치되어 있다. pyenv 가 중심이 되어 conda 를 다루기 위해서 miniconda 를 우선으로 구성되어 있다. shell 스크립트 부분이다.
1 | # >>> conda initialize >>> |
현재 pyenv 로 설치한 파이썬 환경을 살펴보면,
1 | qkboo@ ~$ pyenv versions |
conda 툴을 사용하는 anaconda, miniconda 가 혼재된 환경에서 pyenv로 가상환경을 즉시 활성화 시키면 conda 명령 실행에 혼선을 일으킨다. 예를 들어 위의 가상환경 anaconda3-5.3.1/envs/opencv4 을 pyenv로 활성화 하고 python, conda 명령을 실행해 보면
1 | pyenv shell opencv4 |
가상환경의 python 위치를 확인해 보고, conda 명령을 찾아 보자,
1 | pyenv which python |
pyenv 환경 아래 2개의 conda 때문에 혼선이 나타난다.
예를 들어 현재 쉘 환경에서 파이썬 환경 ananconda3-5.3.1 을 사용하도록 하고, conda 를 확인해 보면 명확하게 해당 파이썬 환경의 anaconda 의 가상환경을 가르키지만! conda env 명령의 결과는 다르게 나타낸다.
anaconda 뒤에 minicond를 설치해서 miniconda 가상환경이 우선으로 나타난다.
1 | pyenv shell anaconda3-5.3.1 |
그래서 가상환경 활성화시 가상환경 디렉토리를 지정해서 사용하자!
그래서 anaconda 와 miniconda 환경을 활성화 시키려면 shell, local, system 명령을 통해 설치된 파이썬 환경을 활성화 하고, 해당 파이썬 환경에서 가상환경을 다루는 것이 좋다.
예를 들어 현재 쉘 환경에서 파이썬 환경 ananconda3-5.3.1 을 사용하도록 실제 가상환경 위치를 지정해서 활성화 한다.
1 | conda activate .pyenv/versions/anaconda3-5.3.1/envs/opencv4/ |