


python 표준 라이브러리에 포함되어 별도 설치 X
프로젝트별로 내부에 .venv 디렉토리를 생성하는 것이 일반적이다.
Ctrl + Shift + P → Python: Create Environment

이후 설치 과정 중 python interpreter 를 선택하면, 좌측 프로젝트 구조에 .venv 디렉토리가 추가된 것을 볼 수 있다.



다만 위 방법은 현재 Terminal 의 위치가 아닌 VS Code 가 열린 프로젝트 의 root 에 설치가 되므로,
원하는 디렉토리에서 터미널 명령어로 만드는 것이 더 좋아 보인다.
$ python -m venv ./{디렉토리명} # 현재 터미널 기준 디렉토리 하위에 {디렉토리명} 으로 생성
venv 가상환경 activate / deactivate 하기
$ source {디렉토리명}/Scripts/activate # 활성화, {디렉토리명} 의 상위 디렉토리에서 실행
$ deactivate # 비활성화
활성화가 된다면, 아래와 같이 터미널의 라인 앞에 (venv) 텍스트가 뜬다.

pip install 로 라이브러리 설치
$ pip install {package_name}=={version} # 패키지명만 입력하면 최신 버전 설치
$ pip list # 설치된 pip 라이브러리 확인
$ pip uninstall {package_name}
로컬에서 python 실행
Anaconda 가상환경 Download
OS 전역적으로 conda 명령어를 통해 사용되며, 가상환경 세팅 경로는 특정 디렉토리 안에 모아둔다.
Windows - 환경 변수 적용

위 환경변수를 적용했음에도 conda 명령어 인식이 되지 않는다면, 변수를 아래 값으로 설정하자.
Terminal 에서 conda 명령어를 정상적으로 인식하는지 확인
$ conda --version
$ conda init bash # bash Terminal 을 사용한다면 최초 한 번 실행해주어야 한다.
유료 repository 에서 라이브러리를 가져왔다가 괜히 불상사가 생길 수 있으므로, repository 채널을 바꾸도록 하자.
$ conda config --add channels conda-forge
$ conda config --set channel_priority strict

이후 repository channel 확인
$ conda config --show channels
위와 같이 conda-forge repository(channel) 이 우선적으로 사용되게 할 수 있는데, 이마저도 불안하니 defaults 를 삭제하자.
$ conda config --remove channels defaults

Terminal 에서 conda 명령어로 가상환경을 직접 생성해보자.
# 가상환경 생성 (env_name은 가상환경 이름)
$ conda create --name {env_name} python={3.xx}
# 내 OS 에 생성된 가상환경 리스트 나열
$ conda env list


가상환경이 생성되었다면,
C:\Users{userName}\AppData\Local\miniconda3\envs 혹은
C:\Users{userName}\miniconda3\envs 디렉토리에 {env_name} 명으로 디렉토리가 생성되었을 것이다. (환경변수가 인식하는 위치)
앞으로는 conda 가 가상환경 디렉토리는 해당 위치에 모아놓을 것이니 참고해 두도록 하자.
# 가상환경 활성화
$ conda activate {env_name}
활성화가 잘 되었다면, 위에서 언급한 venv 와 같이 터미널 라인 앞에 활성화된 (가상환경명)이 출력된다.

# 가상환경 비활성화
$ conda deactivate
# 라이브러리 설치 (pip install 로 해도 무방)
$ conda install {package_name}
# 라이브러리 삭제
$ conda remove {package_name} # pip 는 remove 가 아닌 uninstall
# 해당 가상환경에서 설치된 라이브러리들 나열
$ conda list

위와 같이 나오는 리스트에서 \miniconda3\envs\ 디렉토리 하위에 내가 설정한 conda env name 으로 선택하면 된다.
# env 삭제 명령어
$ conda remove --name {env_name} --all
| pip | conda | |
|---|---|---|
| 패키지 관리자 | Python 환경에서 Python 패키지를 관리 | Python 자체를 관리 가능하며, 다른 언어도 관리가 가능 |
| 패키지 출처 | Python 패키지 인덱스 (PyPI) 최신 라이브러리가 많다. | Conda Repository PyPI 에 있는 최신 라이브러리를 따라가지는 못하지만, Data Science 관련한 라이브러리가 많다. |
| 환경 관리 | Python 패키지를 관리하나, 버전 호환성을 보장하지는 않음. | 패키지 설치 시 종속성을 관리, 해당 패키지의 모든 종속성을 자동으로 설치하고, 충돌을 방지하기 위해 버전 호환성을 보장함. |
| 속도 | 소스에서 패키지를 설치해야 하는 경우가 있어, 일부 패키지는 컴파일 과정이 필요하며 시간이 더 걸릴 수 있음. | 바이너리 패키지를 설치하기 때문에 컴파일 과정이 필요 없어 일반적으로 설치가 빠름. |
| 용도 | Python으로 작성된 패키지를 설치할 때 주로 사용 특히 최신의 Python 라이브러리를 설치할 때 유용 | 복잡한 라이브러리 버전 호환이 필요할 때 Data Science 관련한 라이브러리를 사용할 때 |
아래는 conda 가상환경을 python 3.12 로 만들어 활성화 한 후 , pip install selenium 후 conda env list 출력한 예시이다.
python 의 경우에는 conda 자체에서 관리되며, pip install 을 했으므로 Channel = pypi 로 출력됨을 볼 수 있다.

우선 실행환경에 docker 설치 및 실행이 완료되었다는 가정하에 진행한다.
conda docker 로 사용하기에는 조금 무거운 감이 있어, venv 환경에서 띄우는 것을 진행해보자.
python 프로젝트 내부에 Dockerfile 파일을 추가한다.
# Dockerfile
# 베이스 이미지로 Python 사용
FROM python:3.12.4-slim
# 작업 디렉토리 생성
WORKDIR /app
# 필요 파일 복사
COPY requirements.txt requirements.txt
COPY app.py app.py
# 의존성 설치
RUN pip install --no-cache-dir -r requirements.txt
# app.py 파일 실행
CMD ["python", "app.py"]
위 파일에서는 requirements.txt 파일을 기반으로 pip install 을 진행하므로,
requirements.txt 파일에 어떤 라이브러리들을 설치할 지 명시해야 한다.
# requirements.txt
# 예시)
Flask
Selenium

이제 Terminal 에서 Docker 이미지를 만들어보자.
# Docker 이미지 빌드
$ docker build -t {image_name} .
ex) docker build -t test .
# Docker 컨테이너 실행
$ docker run -d -p {host_port}:{container_port} {image_name}
ex) docker run -d -p 8080:5000 test
실제로 잘 구동되는지 확인하기 위해, api 를 만들고 응답을 테스트해보자. flask 는 간단한 api 구현을 위한 라이브러리이다.
아래 코드는 localhost:5000 에 접속 시 "Hello, World" 를 리턴하는 API 를 명세한 것이다.
$ pip install flask
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
return "Hello, World"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
위에서 언급한대로 image 를 빌드하고 컨테이너를 띄워보자.
이미지를 Terminal 에서 띄운 모습.

Docker 에서 이미지가 생성된 화면. (Windows)
$ docker images # 명령어로도 image 생성 확인 가능.

docker run

기동이 잘 됐는지 확인하기 위해, localhost:8080/hello 에 접속해보자.
외부 포트 8080 -> 도커 내부 포트 5000 에 매핑하였으므로 정상적으로 출력될 것이다.
