본문 바로가기
Development/Python

Conda로 Python 버전 별 설치, 관리, 삭제하기

by IMCOMKING 2020. 2. 27.

Ubuntu에 다른버전의 Python 설치하기

필자처럼 다른 버전의 python을 설치하려고 src부터 빌드하는 것은 절대로 해서는 안될 짓이다. 컴파일 과정이 굉장히 복잡하고 또 엄청나게 오래걸리며, 버전 변경 또한 어렵기 때문이다. 그런데 pyenv를 쓰거나, apt-get도 버전 관리가 안되기 때문에 별로 좋지 않은 방법이다. 결국 가장 좋은 방법은 python을 conda로 설치해서 관리하는 것이다. 왜냐하면 conda는 완전한 동작을 보장하는 dependency들을 한방에 설치해주고, 자유로운 버전 변경도 가능하기 때문이다. 게다가 여러 버전을 동시에 사용할 수 있는 가상환경도 쉽게 만들 수도 있다.

 

 

 

 

 

Conda 설치하기 최신(2023.02.26)

conda는 linux에서 배포되는 매우 다양한 종류의 프로그램을 설치할 수 있게 도와준다. C 프로그램부터 python 패키지까지 그 범위가 매우 넓다. 그러므로 python 언어 자체를 설치할 수 있는 것은 당연하다. 따라서 python을 설치하기 가장 좋은 방법인 conda를 설치해보자. 이 conda를 설치하는 방법은 miniconda를 이용하는 것이다.
 

* miniconda 설치 방법(최신 버전)

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

sudo bash Miniconda3-latest-Linux-x86_64.sh

(설치코멘드 확인 -> 보통 계속 yes하면 됨)

export PATH=$PATH:/root/miniconda3/condabin/
export PATH=$PATH:/root/miniconda3/bin/

 
 

* miniconda 설치 방법(구버전)

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ./miniconda.sh

sudo /bin/bash ./miniconda.sh -b -p /opt/conda

export PATH=$PATH:/opt/conda/bin

 

* 참조: https://conda.io/miniconda.html

 

* miniconda 삭제 방법

rm -rf /opt/conda
(또는 default 설치경로인 /root/miniconda3)
 

 

 
 
 

Apt-get으로 설치된 Python 삭제하기

conda를 이용해서 python을 설치할 경우, 기본으로 설치된 python과 동시에 존재하게 된다. 이런 경우 여러가지 pip install 등을 할 때 계속해서 충돌이 일어나므로, conda를 사용하기전에 기존에 깔린 python을 삭제하는 것을 추천한다.
 
sudo apt-get purge --auto-remove python
sudo apt-get purge --auto-remove python3
 
apt-get remove는 configuration이나 data파일은 남기고 오직 binary만 삭제하는데, 이렇게 하면 아직도 python이 남아있어서 이상해진다. 따라서 반드시 purge를 이용해서 configuration까지 완전히 삭제해야한다.
 
만약 기본적으로 설치되어 있는 python을 삭제하지 않은 상태에서 이미 conda로 python을 설치한 경우, 위 명령어로 기본 설치 python을 지우고, 아래의 명령어를 실행하거나, terminal을 재접속한다.
source ~/.bashrc
 

절대 기본 설치된 python을 삭제해서는 안된다.

Ubuntu system의 apt-get 등은 python기반의 프로그램이다. 따라서 python을 삭제하면 기본 시스템이 손상된다.

* 기본 python 삭제 시 복구방법

(그러나 local에서는 terminal 접속이 정상적으로 안되므로, 원격접속을 해야만한다....)
 
sudo apt install python3-all
sudo apt install gnome-terminal
sudo apt install --reinstall ubuntu-desktop
 
 

Default python을 conda로 바꾸기

Ubuntu desktop에서 위와 같은 방식으로 기본 설치된 python을 삭제시 문제가 생기는 것을 확인하였다. 따라서 기본 설치된 python을 삭제하기 보다는 다음과 같은 방법으로 /opt/conda의 python을 alias를 통해서 다음과 같이 지정하자.(default python은 /usr/bin에서 호출 가능하다.)

 

vim ~/.bashrc 에 다음을 추가

 

alias python="/opt/conda/bin/python"

 

 
 

 

Conda 사용하기

* conda update하기

which conda

sudo /opt/conda/bin/conda update -n base conda

 

 

* conda-forge 채널 추가하기

많은 유용한 프로그램들이 conda-forge 채널을 통해 보급되고 있어서, 기본적으로 추가해주는 것이 매우 좋다.

sudo conda config --add channels conda-forge

 

* conda 사용시 permission denied가 뜰 때, conda의 sudo를 사용하고, conda의 경로를 직접 입력해준다.

which conda

sudo /opt/conda/bin/conda install nodejs

 

또는 alias sudop='sudo env "PATH=$PATH"'

이렇게 sudop라는 명령어를 정의해서 대신 사용하면 좋다.

 

* 가상환경 없이 기본이 되는 python 버전 바꾸기

sudop conda install python=3.6.2
(이상하네.. 왜 이렇게해도 conflict나면서 설치가 안되는걸까..? 원래는 됬었는데, 무조건 가상환경으로 설치해야하나?)

 

* 특정 python 패키지 설치하기

sudop conda install jupyter

 

* 가상환경의 만들기(python3.6.2 사용 환경)

conda create -n python362 python=3.6.2

 

* 가상환경 목록보기

conda info -e

 

* 가상환경 시작하기

conda activate python362 

 

* 가상환경 종료하기

conda deactivate

 

 

* Save current environment to a yml file

conda env export > puppies.yml

 

* Load environment from a yml file

conda env create -f puppies.yml

https://kapeli.com/cheat_sheets/Conda.docset/Contents/Resources/Documents/index

 

 

* conda로 설치한 패키지의 bin위치

/home/dhkwak/.conda/envs/python362/bin

 

 

* 특정 env에 conda로 패키지 설치하기

conda activate <python362>

conda install -n <python362> <패키지이름>

https://stackoverflow.com/questions/16727171/installing-anaconda-into-a-virtual-environment

 

* 특정 env에 pip로 패키지 설치하기

conda activate <python362>

pip

which pip

sudo /home/dhkwak/.conda/envs/python362/bin/pip install timeago

http://www.puzzlr.org/install-packages-pip-conda-environment/

 

* 특정 python버전의 pip 사용하기

python -m pip

python3.5 -m pip

python3.6 -m pip

 

 

Conda Trouble Shooting

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

-> conda init all

https://stackoverflow.com/questions/55507519/python-activate-conda-env-through-shell-script

 

 

 

 

댓글