본문 바로가기
Programming/Python

파이썬 가상환경 설치하기

by DUSTIN KANG 2024. 5. 11.

21년도 쯤,, 학부 시절만 해도 Anaconda를 자유롭게 사용할 수 있었습니다.

그런데 회사에 입사하고 나서 라이센스 때문에 Anaconda를 사용하려면 일종의 요금을 내고 사용해야 한다고 합니다.

저도 자세하게는 몰랐지만 해당 블로그에 의하면 200명의 직원 이상의 회사라면 무료로 사용하면 안된다고 합니다.(이 이상의 경우 Enterprise 버전을 사용해야 합니다.)

https://www.anaconda.com/blog/anaconda-commercial-edition-faq

 

오늘은 파이썬 가상환경을 설치하는 방법에 대해 알아보려고 합니다.

그리고,  Anaconda의 Commercial 약관에 영향 받지 않는 MiniConda + CondaForge로 설치하는 방법을 알아보고자 합니다.

 

먼저 Ubuntu에서 파이썬을 설치하는 방법입니다.

sudo apt update
sudo apt install python3

sudo apt install python3-pip # 파이썬 패키지 관리자

Conda

사실, Anaconda를 사용하는 것이 문제가 되는게 아니라 Anaconda 저장소를 사용하는 것이 문제인 것입니다. 

그럼 그 저장소를 Conda-forge로 등록하면 사용이 가능합니다.

 

그럼 미니콘다를 설치해봅시다.

해당 Anaconda docs↗에서 설명이 간결하게 잘 나와있으니 OS에 맞게 설치하면 될 것 같습니다.

아래는 리눅스 Ubuntu 20.02 운영체제 기준으로 설치하였습니다.

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

 

설치를 마친 후 새로 설치된 MiniConda를 초기화 해야합니다. `bash`와 `zsh` 셀 따라 다르기 때문에 자신의 셀에 따라 초기화하면 됩니다.

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

 

이번엔 Conda-Forge↗를 설치하는 방법입니다.

Conda-Forge를 저장소로 등록하기 위해 다음과 같이 명령어를 입력하면 됩니다.

채널은 Conda 패키지 파일을 포함하는 디렉토리의 URL을 말합니다. 기본적으로 `default`라는 채널을 제공하지만 추가로 사용하기 위해 다른 채널을 추가할 수 있습니다.

# 새로운 채널을 추가합니다.
conda config --add channels conda-forge

# 채널의 우선순위를 정해, 높은 우선순위의 채널을 먼저 참조합니다.
conda config --set channel_priority strict

# 채널을 확인합니다.
conda config --show channels

 

다음은, 기본적인 Conda 명령어 입니다. Conda를 이용해 가상환경을 관리할 때 사용합니다.

명령어
새로운 가상환경 생성 `conda create --name venv python=3.10`
설치된 가상환경 조회 `conda env list`
가상환경에 설치된 패키지 리스트 `conda list` or `conda list -n venv`
가상환경 삭제 `conda env remove --name venv -all`
가상환경 활성화 `conda activate venv`
가상환경 비활성화 `conda deactivate`
Notebook 설치 및 연결 `pip install jupyter notebook ipykernel`
`python -m ipkernel install --user --name venv --display-name venv`

 

💡 Conda 가상환경 자동 활성화 해지
conda config --set auto_activate_base false

pip + venv

파이썬의 표준 가상환경 라이브러리로 `virtualenv`의 경량화된 라이브러리라고 생각하면 됩니다. 조금 느리지만 간편하게 설치할 수 있다는 장점이 있죠. 가상환경을 생성하고 활성화하는 방법은 정말 쉽습니다. Docs↗

 

가상환경을 생성하는 방법은 다음과 같습니다.

python -m venv myvenv
# 여기서 myvenv는 가상환경의 커스텀 이름입니다.

 

이번엔 가상환경을 활성화 해봅시다.

# Mac
source (가상환경이름)/bin/activate

# Window
call (가상환경이름)/Scripts/activate

# Linux
source (가상환경이름)/Scripts/activate

# 비활성화
deactivate

 

가상환경 내 패키지를 설치하는 방법입니다. 패키지를 PyPI↗에서 다운 받아 설치하는데 `pip`로 패키지를 관리합니다.

주로 `requirements.txt`라는 의존성 파일로 설치하는 경우가 많습니다.

# 단일 패키지 설치
pip install numpy

# 의존성 파일 설치
pip install -r requirements.txt

# 의존성 파일 생성
pip freeze > requirements.txt

# 패키지 리스트 확인
pip list
주로, Conda는 데이터 분야나 머신러닝에 최적화된 패키지를 관리하는 데 사용합니다. 반면, venv는 일반적인 파이썬 웹 개발 프로젝트에 사용합니다.

 

 


Poetry

주로 토이 프로젝트를 사용할 땐 `pip`와 `venv`를 많이 사용하지만 여러가지를 하다보면 실수할 때가 있습니다. 그래서 `Poetry`는 가상환경과 의존성 정보까지 관리할 수 있기 때문에 생각보다 편한 의존성 관리 도구입니다.

 

설치하는 방법은 꽤나 간단합니다. 해당 Docs↗에서도 확인이 가능합니다.

# mac
brew install poetry

# win, linix
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

# 버전 확인
poetry --version

 

가상환경을 생성하는 방법입니다.

poetry new (가상환경or프로젝트)

 

그 다음 해당 디렉토리를 확인하면 다음 구조를 보실 수 있습니다.

.
├── README.md
├── happy
│   └── __init__.py
├── pyproject.toml
└── tests
    └── __init__.py
  • project.toml : 프로젝트에 대한 정보와 의존성, Python 버전 정보가 담겨 있습니다.

의존성 관리

만약 패키지를 설치하고 싶으면 다음 명령어를 입력하면 설치할 수 있습니다.

poetry add django==5.0.6

 

패키지를 설치하게 되면 `pyproject.toml` 파일에 패키지가 기록됩니다.

 

`pyproject.toml`에 기록되어 있는 의존성은 다음 코드로 설치할 수 있습니다.

poetry install

가상환경 활성화

보통 Poetry는 `cache-dir`에 가상환경을 설정합니다.

다음 명령어를 통해 가상환경이 프로젝트 디렉토리에 위치하도록 수정할 수 있습니다.

poetry config virtualenvs.in-project true

 

가상 환경을 활성화 하는 방법은 다음과 같습니다.

poetry shell # 가상환경 활성화 + 새 쉘

source {path_to_venv}/bin/activate # 가상환경 활성화

exit # 쉘 종료

deactivate # 가상환경 종료

파이썬 버전 관리

`pyenv`는 파이썬의 시스템을 설치하고 관리하는 도구입니다.

brew install pyenv # pyenv 설치

pyenv version # 현재 파이썬 버전들 확인

pyenv install --list # 설치 가능한 파이썬 버전 확인

pyenv install 3.10.0 # 파이썬 버전 설치

 

 


☕️ 포스팅이 도움이 되었던 자료

오늘도 저의 포스트를 읽어주셔서 감사합니다.

설명이 부족하거나 이해하기 어렵거나 잘못된 부분이 있으면 부담없이 댓글로 남겨주시면 감사하겠습니다.

'Programming > Python' 카테고리의 다른 글

Python OS Library  (0) 2024.06.04
깊은 복사와 얕은 복사  (0) 2024.04.08
Garbage Collector 동작 방식  (0) 2024.02.07
파이썬에서 멀티 스레딩을 구현하지 못하는 이유  (0) 2024.01.31
파이썬 패키지와 모듈  (0) 2024.01.02