Ubuntu에 다른버전의 Python 설치하기
필자처럼 다른 버전의 python을 설치하려고 src부터 빌드하는 것은 절대로 해서는 안될 짓이다. 컴파일 과정이 굉장히 복잡하고 또 엄청나게 오래걸리며, 버전 변경 또한 어렵기 때문이다. 그런데 pyenv를 쓰거나, apt-get도 버전 관리가 안되기 때문에 별로 좋지 않은 방법이다. 결국 가장 좋은 방법은 python을 conda로 설치해서 관리하는 것이다. 왜냐하면 conda는 완전한 동작을 보장하는 dependency들을 한방에 설치해주고, 자유로운 버전 변경도 가능하기 때문이다. 게다가 여러 버전을 동시에 사용할 수 있는 가상환경도 쉽게 만들 수도 있다.
Conda 설치하기
conda는 linux에서 배포되는 매우 다양한 종류의 프로그램을 설치할 수 있게 도와준다. C 프로그램부터 python 패키지까지 그 범위가 매우 넓다. 그러므로 python 언어 자체를 설치할 수 있는 것은 당연하다. 따라서 python을 설치하기 가장 좋은 방법인 conda를 설치해보자. 이 conda를 설치하는 방법은 miniconda를 이용하는 것이다.
* 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까지 완전히 삭제해야한다.
https://www.howtoinstall.co/en/ubuntu/xenial/python?action=remove
만약 기본적으로 설치되어 있는 python을 삭제하지 않은 상태에서 이미 conda로 python을 설치한 경우, 위 명령어로 기본 설치 python을 지우고, 아래의 명령어를 실행하거나, terminal을 재접속한다.
source ~/.bashrc
절대 기본 설치된 python을 삭제해서는 안된다.
Ubuntu system의 apt-get 등은 python기반의 프로그램이다. 따라서 python을 삭제하면 기본 시스템이 손상된다.
https://superuser.com/questions/557231/system-file-removed-after-sudo-apt-get-remove-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
* 특정 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