Python 설치 및 가상 환경(conda evn)

Tech김백엔드, Tech막내녀석 공동작성 및 수정본


1. Python 설치

Python을 설치하는 방법은 3가지가 있다.

  1. Python 공식 홈페이지에서 설치
  2. Anaconda 설치
  3. Miniconda 설치

1번 공식 홈피 vs. 2번 Anaconda

1번 공식 홈페이지 설치 방법을 선택하면, 추후 외부 라이브러리를 설치할 때 pip tool로만 python 라이브러리만 설치할 수 있다.

2번을 선택하면, Ananconda에 python 설치가 포함되어있기 때문에 pip tool과 conda tool을 혼용해서 사용할 수 있다.

conda는 pip보다 패키지 의존성(dependency) 문제를 더 잘 관리해주기 때문에 요즘 1번 방법보다 더 많이 선호된다.

예를들어 어떤 패키지를 upgrade하면 해당 버전에 따라 의존되는 패키지들도 함께 upgrade 시켜준다.
그러나 pip install과 conda install을 혼용해서 쓰다보면 pip로 설치되었던 패키지는 conda로 update시에 누락시키지는 경우가 발생한다.
그래서 pip와 conda는 혼용해서 쓰는 것을 추천하지 않는다. 그러나 conda library는 보통 한 버전 정도 늦기 때문에 최신 버전이 꼭 필요할 때는 어쩔 수 없이 pip를 사용한다. (현재 selenium library는 pip로 설치하면 버전 4가 설치되지만 conda로 설치하면 버전 3이 설치된다.)

그래서 Anaconda를 설치한 경우는 꼭 최신 버전이 필요하지 않은 경우 pip대신 conda install로 설치한다.

pip install [패키지명]  # 대신에
conda install [패키지명]  #으로 설치한다.

2번 Anaconda vs. 3번 Miniconda

2번 Anaconda는 python뿐 아니라 천 개가 넘는 data science와 ML(machine learning) 패키지를 다 포함하고 있다. 다운로드하는 설치 파일은 약 600메가지만, 설치파일 실행해서 다 설치하고 나면 약 3Gb 정도의 용량을 차지한다.
3번 Miniconda는 다 설치해도 약400Mb정도 용량을 차지한다. Anaconda의 라이트 버전이라고 보면 된다. 그러나 만약 추가 외부 라이브러리가 필요하면 그냥 그때 그때 conda install로 설치하면 된다. (어차피 가상환경을 생성하려면 설치해줘야한다.)

우선 요즘 시대에 3Gb가 큰 것은 아니니 2번 Anaconda를 설치해본다.

Anaconda를 설치하려면 https://www.anaconda.com/download 여기서 다운로드 받아 설치하면 된다. (Windows, MacOS, Linux를 다 지원한다.)

* miniconda3 설치

$ sudo apt update   
$ sudo apt upgrade

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

# 약관 계속 Enter 입력하다가 마지막에 'yes' 입력
--> 스킵하려면 "/" 입력 후 "2 ANA" -> ENTER
# 아래 질문에서 'yes' 입력 후 Enter 입력
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:

eval "$(/root/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"

To install conda's shell functions for easier access, first activate, then:

conda init

Thank you for installing Miniconda3!
# ------------------------------------------- 위 문구가 나오면 설치성공

 

* 터미널을 재시작을 해야 정상동작한다.

2. IDE

몇 년전에는 python하면 Jetbrains의 PyCharm이 가장 유명했던 것 같다.
물론 그냥 notepad++나 vi editor를 써도 되고, IntelliJ를 써도 된다.
하지만 나는 그냥 VS code에 Python extension 하나 설치해서 쓰겠다.

3. 가상 환경 (Virtual Environment)

(참고: 이 글은 Anaconda + VS code 환경에서 작성)

기본적(default)으로는 base 환경에 있다.

$ which python   
/Users/yunjaekim/anaconda3/bin/python

위처럼 처음에 which python을 입력하면 기본 base 환경의 경로를 보여준다.

Python에서의 가상환경(venv : virtual environment)는 React의 node_modules 폴더와 비슷한 것이라고 생각하면 된다.

즉, React로 비유하자면 새로운 가상환경(venv)의 생성은

각 프로젝트만의 고유의 node_modules 폴더를 만드는 일이라고 보면 된다.

 

가상 환경 생성

여기서 새로운 가상환경(venv)를 만들어보자.

$ conda create -n venv01 python=3.10.12

위에 -n--name로 써도 된다.
venv01은 생성할 가상 환경의 이름
python=3.10은 python 3.10 환경을 말한다. (현재 최신 버전은 3.11)

$ conda activate venv01

를 하면 현재 가상환경이 venv01로 바뀐다.

(위에서 conda대신 source를 사용해도 된다.)

참고: 다시 해제하고 base로 돌아갈 때는

  $ conda deactivate

하면 된다. (deactivate는 나중에 예제 끝나고 실행)

이제

$ which python
/Users/yunjaekim/anaconda3/envs/venv01/bin/python

을 하면 정해진 가상 환경에서 동작하는 것을 볼 수 있다.
Anaconda를 설치했으니 pip freeze라는 명령어보다 conda를 쓰자.

$ conda list

그러면 이 가상환경(venv)에 설치된 package명이 출력된다.
이제 tqdm이라는 이름의 CLI 환경에서 progress bar를 보여주는 패키지를 설치해보자.
pip install 대신에

$ conda install tqdm -y

으로 설치한다.

 

예제

예시로 test01.py라는 파일을 하나 생성하고 다음 코드를 입력해보자.

import tqdm, time

i = 0
for _ in tqdm.tqdm(range(10)):
    i += 1
    time.sleep(0.2)

 

VS code에서 python interpreter

실행하기 위해서는 VS code에서 python interpreter를 선택해줘야하는데
방금 만든 venv를 VS code에 바로 뜨지 않으니 한 번 Reload를 해준다. (하단 우측)

VS code에서 Command Palette 열기 :
Mac의 경우: Cmd + Shift + P
Windows의 경우: Ctrl + Shift + P
로 열고, 'Python 인터프리터'를 검색하여 선택하고

커서 키로 방금 생성한 venv01을 선택해준다.

그리고 실행하면 동작할 것이다.

 

package list를 export하기

React와 비교하자면, node_modules는 .gitignore에 등록하여 git에 올릴때 올라가지 않게 한다.
그리고 다운로드 받는 사람이 npm install을 할 수 있게끔하는 package.json이라는 파일이 존재한다.
Python에서는 이 package.json에 대응되는 파일을 생성하려면

위에서 봤던 conda list를 export해주면 된다.
참고로 pip freeze > requirements.txt는 pip 방식이고 우리는 conda를 사용하자.

$ conda list --export > packagelist.txt

으로 저장한다.
React의 package.json에 대응되는 것은 알았고, 이제 git에서 다운로드 받는 사람이 npm install에 대응되는 방법을 알아보자.
pip install -r requirements.txt는 pip 방식이고 conda로는

$ conda install --file packagelist.txt

하면 된다.

 

PIP로 list 저장하기

pip freeze > requirements.txt

 

PIP로 list 불러오기

pip install -r requirements.txt

 

venv 목록 조회 및 삭제

위에 예제용으로 생성한 test01.py 코드가 있는 디렉토리를

$ cd ..
$ rm -rf [폴더이름]

로 삭제를 해도 우리가 생성한 venv01은 지워지지 않고 그대로 남는다.
패키지가 한두개 설치된 venv가 보통 200~300Mb가 넘어가니 지워주는 것도 나쁘지 않다.
이 venv는 registry에 등록되는 성격이 아니라 그냥 폴더 위치를 찾아가 폴더만 지워주면 끝이다.
그러나 좀 더 편하게 CLI 환경에서 다음 명령어로 생성한 가상환경 목록을 조회할 수 있다.

$ conda info --envs

base                  *  /Users/yunjaekim/anaconda3
venv01                   /Users/yunjaekim/anaconda3/envs/venv01

가상환경 삭제

$ conda remove --name venv01 --all

로 삭제할 수 있다.

 

# venv package list export

* conda 가상환경에 설치된 package list 목록 출력하여 export

conda list --export > requirements.txt

 

* conda 가상환경에서 txt 파일 불러와 package 설치하기

conda install --file requirements.txt

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유