[Anaconda] 가상환경 생성

ByungJik_Oh·2025년 8월 19일
0

[Hyundai Rotem KDT]

목록 보기
20/22
post-thumbnail

📚 주요 라이브러리들 버전

현재 사용하는 주요 라이브러리들 버전을 정리하면 다음과 같습니다.

  • WSL2 기반의 Ubuntu : 22.04
  • python : 3.10.16
  • CUDA : 12.3
  • cuDNN : 8.9
  • Tensorflow : 2.16.2
  • Numpy : 1.26.4
  • pandas : 2.2.2
  • matplotlib : 3.8.4
  • scikit-learn : 1.4.2
  • PyTorch : 2.2.2+cu121
  • Lightning : 2.2.4
  • Transformers : 4.39.3
  • datasets : 2.19.1
  • sentence-transformers : 2.6.1
  • faiss-gpu : 1.9.0

📚 새로운 가상환경 생성

conda deactivate

conda remove -n tf_env --all

conda create -n tf_env python=3.10.16

# yaml파일을 이용해서 새로운 환경 생성 
# conda env create -n new_env -f old_env.yml

conda activate tf_env

# Kernel 등록 전에 jupyter를 먼저 설치
conda install jupyter

# 가상환경을 Jupyter 커널로 등록
python -m ipykernel install --user --name=tf_env --display-name="tf_env"
  • Jupyter 커널 목록 확인
jupyter kernelspec list
  • 특정 커널 삭제
jupyter kernelspec uninstall tf_env
  • Jupyter Lab 실행 설정
# jupyter lab 실행 시 아래와 같이 실행해야 함.
jupyter lab --no-browser --ip=0.0.0.0

# 실행 후 나온 token값을 이용해서 windows browser에 url을 입력해서
# jupyter lab 서버에 접속한 후 사용

# 실행방법이 불편하니 설정을 통해 조금 더 쉽게 사용하자!

jupyter lab --generate-config  # 환경설정파일 생성

# ~/.jupyter/jupyter_lab_config.py 파일 생성

# 해당 파일을 vi로 열어서 다음의 내용을 찾아 수정

c.ServerApp.notebook_dir = '/home/moon9342/jupyter_home'
c.ServerApp.token = ''          # ← 빈 문자열로 설정하면 토큰 없이 접속 가능
c.ServerApp.password = ''       # ← 비밀번호도 제거
c.ServerApp.ip = '0.0.0.0'      # ← 모든 IP에서 접속 허용
c.ServerApp.open_browser = False
c.ServerApp.port = 8888         # ← 포트 번호 고정

ServerApp.iopub_msg_rate_limit=1000000
ServerApp.rate_limit_window=10.0

# 설정을 끝내고 jupyter lab 실행 후
# windows browser에서 http://localhost:8888 접속

📚 추가적으로 설치할 package와 버전

1. 구현에 필요한 기본 package 설치

  • package를 설치할 때 한번에 설치하는 것과 각각 따로 설치하는 것 사이에는 중요한 차이가 있다.
항목한 번에 설치따로따로 설치
의존성 해결전체 패키지를 동시에 고려해 가장 호환되는 조합을 계산순차적로 설치되면서 기존 패키지와 충돌 위험이 있음
설치 속도빠르고 일관됨여러 번 재계산 → 느릴 수 있음
충돌 위험낮음 (최적 조합을 conda가 계산)높음 (후속 설치가 앞선 패키지를 강제로 업/다운그레이드할 수 있음)
안정성매우 높음 (추천 방식)상황에 따라 예기치 못한 dependency 충돌 발생
conda install numpy=1.26.4 pandas=2.2.2 matplotlib=3.8.4 scikit-learn=1.4.2 

pip install imbalanced-learn==0.12.2

# conda install statsmodels
pip install statsmodels

pip install ipython==8.12.2 # 버전충돌을 피하고 안정적 사용을 위해 버전 다운그래이드

# tensorflow 호환성을 위해 설치(TensorFlow 2.13일 경우 아래코드 실행)
# pip install typing-extensions==4.5.0  

# conda install로 설치하지 않는다. (GPU가속때문)
pip install tensorflow==2.16.2  

# 호환버전으로 설치

# PyTorch + torchvision (CUDA 11.8용 공식 PyTorch 인덱스 사용)
# pip install torch==2.1.2 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118

# PyTorch + torchvision (CUDA 12.1용 공식 PyTorch 인덱스 사용)
pip install torch==2.2.2+cu121 torchvision==0.17.2+cu121 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121

# Lightning (v2 계열)
# lightning은 2023년 이후로 이름이 "lightning"으로 변경
pip install lightning==2.2.4


# HuggingFace Transformers & Datasets
# datasets==2.16.0은 2023년 11월경 릴리스
# 이 시점의 transformers 최신 안정 버전은 4.36.2
# 이후 버전(4.37+)에서는 typing-extensions>=4.6 및 기타 dependency 업데이트가 
# 포함되어 typing-extensions==4.5와 충돌 가능
pip install transformers==4.39.3 datasets==2.19.1
pip install sentence-transformers==2.6.1
pip install kobert-transformers  # tokenizer
# pip install huggingface-hub==0.22.3
# (0.33.0 버전이 이미 설치됨)

conda install -c conda-forge faiss-gpu # 시간이 오래 걸림.
# pip install faiss 또는 pip install faiss-gpu는 공식적으로 잘 
# 동작하지 않음. → 반드시 conda 사용 추천
# conda 설치 시 cudatoolkit=12.1을 명시하지 않고, 시스템에 이미 설치된 
# CUDA 12.x을 사용하게 한다. WSL2에서 직접 설치된 CUDA는 PyTorch나 
# FAISS가 런타임에 자동으로 찾는다.

conda-forge 채널에서 TensorFlow를 설치할 수 있다. 하지만 conda-forge에서 설치한 TensorFlow는 CPU 전용 버전이다. GPU 가속이 필요하다면 pip로 설치하는 것이 유일한 방법이다.

PyTorch에서 GPU(CUDA)를 사용하기 위해서는 python-cuda=12.1conda 환경안에 별도로 설치해야 한다. 심지어 WSL2의 Ubuntu 시스템에 이미 CUDA 12.3과 cuDNN 8.9를 전역 설치해두었다고 하더라도 그렇다.

프레임워크CUDA 연동 방식
TensorFlow시스템에 설치된 CUDA/cuDNN를 사용함 (시스템 환경 변수 기반)
PyTorch자체적으로 CUDA runtime과 라이브러리를 번들로 관리함 (환경 내부에서 처리)

2. libopencv-dev 설치

  • C++ 기반 OpenCV 라이브러리와 헤더 파일이 설치됨.
sudo apt install libopencv-dev
항목설명
설치 위치시스템 전체 (global)에 설치됨 (/usr/lib, /usr/include 등)
언어 지원C++ 기반 OpenCV 라이브러리와 헤더 파일이 설치됨
Python 바인딩기본적으로 포함되지 않음 (따로 opencv-python를 설치해야 함)
버전Ubuntu 저장소 기준으로 고정된 구버전일 가능성이 높음 (예: OpenCV 4.2.x)
용도C++ 개발용 또는 시스템 전역에서 사용하는 OpenCV 애플리케이션
예시g++, cmake 등을 이용한 컴파일에 사용

3. opencv 설치

  • OpenCV-Python 4.7.0.72 버전을 설치 (TensorFlow 2.13 버전일 경우)

    	(Python 3.10과 호환 가능, Numpy 1.24.3과 충돌 없음, TensorFlow 2.13과 병행 사용 시 주요 의존성 충돌 없음)
pip install opencv-python==4.7.0.72
  • OpenCV-Python 4.9.0.90 버전을 설치 (TensorFLow 2.16.1 버전일 경우)
pip install opencv-python==4.9.0.80
항목설명
설치 위치현재 Python 환경(가상환경 포함)에만 설치됨 (site-packages 내부)
언어 지원Python 바인딩만 포함 (C++ 개발은 불가)
버전PyPI에서 최신 버전 설치 가능 (예: OpenCV 4.9.x)
용도Python 기반 딥러닝/컴퓨터 비전 코드 실행용
특징가상환경마다 독립 설치 가능 → TensorFlow, PyTorch와 함께 사용 권장

4. protoc 설치 (TensorFlow 2.13 버전일 경우)

  • protoc 3.20.xTensorFlow/odels 레포지토리의 최신 Object Detection API와 안정적으로 작동한다. 3.21+ 버전은 create_pascal_tf_record.py 등에서 오류가 발생할 수 있다.

  • protoc 버전 확인

protoc --version  # libprotoc 29.3

# 만약 3.20.3 버전이 아니라면 삭제 후 다시 수동 설치
  • 기존 protoc 제거
sudo apt remove protobuf-compiler
# 만약 설치안되있고 binary로 설치되어 있는 경우
# which로 찾아서 제거
rm -rf /home/moon9342/anaconda3/envs/tf_env/bin/protoc
# sudo rm -f /usr/local/bin/protoc

# which protoc 명령어로 경로를 확인하고 해당 바이너리 파일 제거
  • protoc 설치 (수동 설치)
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.3/protoc-3.20.3-linux-x86_64.zip
unzip protoc-3.20.3-linux-x86_64.zip -d $HOME/protoc

# export PATH="$HOME/protoc/bin:$PATH"  
# 현재 셸 세션에서만 PATH 환경변수를 수정하며, 
# 터미널을 종료하면 원래 상태로 돌아간다.
# 만약 영구적으로 적용하려면
echo 'export PATH="$HOME/protoc/bin:$PATH"' >> ~/.bashrc
# source ~/.bashrc
# 명령을 실행하면 된다.

source ~/.bashrc

protoc --version
# libprotoc 3.20.3

5. protobuf 설치 (TensorFlow 2.13 버전일 경우)

  • protoc 3.20.3과 가장 잘 어울리는 Python용 protobuf 패키지 버전은 protobuf 3.20.3이다. 버전을 똑같이 맞추는 것이 좋다.
conda install -c conda-forge protobuf=3.20.3  # 시간이 약간 걸림

📚 설정 확인

1. TensorFlow에서 GPU 사용 여부 확인

import tensorflow as tf

print(tf.__version__)  # 2.16.1

# 물리적인 GPU 목록 출력
print("Available GPU devices:")
print(tf.config.list_physical_devices('GPU'))

# Available GPU devices:
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

TensorFlow 코드 실행 시 경고가 발생하는데 그 이유는 다음과 같다.
3가지 경고 모두 무시하면 된다.

메시지원인영향조치 필요 여부
oneDNN 활성화CPU 최적화결과값 미세 차이❌ 필요 없음 (정보 메시지)
AVX2 등 미사용CPU 명령어 미최적화일부 연산 속도 저하❌ 무시 가능
TensorRT 미탐지TF-TRT 비활성화고속 추론 최적화 미사용❌ 무시 가능 (선택적 설치)

2. PyTorch에서 GPU 사용 여부 확인

import torch

print("PyTorch version:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())
print("CUDA version:", torch.version.cuda)

# PyTorch version: 2.2.2+cu121
# CUDA available: True
# CUDA version: 12.1

📚 가상환경 복사

Anaconda에서 가상환경을 만들고 라이브러리를 설치할 때, 다른 가상환경에서 설치했던 라이브러리라고 하더라도 기본적으로는 다시 다운로드해서 설치한다. 다만, 특정 조건(캐쉬가 존재)에서는 다운로드 없이 설치하는 경우도 있다.

  • Conda는 가상환경 간에 라이브러리를 공유하지 않는다.
  • 각각의 가상환경은 고립된 파일시스템을 갖기 때문에 라이브러리를 새로 설치해야 한다.

만약 동일한 환경으로 여러 가상환경을 만들어서 사용할 경우 가상환경을 복사해서 사용하는 경우가 있는데 생각보다 자주 라이브러리 종속성이 깨진다.

env환경을 yaml파일로 내보내고 이 내용을 이용해서 새 환경을 만드는 방법이 좋다.

  • yaml파일을 이용한 가상환경 생성방법
conda activate old_env

# 기존 가상환경 yaml파일로 export
# -no-builds 옵션은 conda env export 시에 패키지의 build 번호를 생략하기 위한 것이다.
# 버전 정보만 포함되고, 빌드 정보는 생략된다
conda env export --no-builds > old_env.yml

# yaml파일을 이용해서 새로운 환경 생성 
conda env create -n new_env -f old_env.yml

# 가상환경을 Jupyter 커널로 등록
python -m ipykernel install --user --name=new_env --display-name="new_env"

위와 같이 env export를 이용하여 yaml파일을 내보낼 때 torch==2.1.2+cu188처럼 +cu118이 들어간다면 PyPI에서 직접 설치할 수 없는 형식이므로 yaml에서 그대로 쓰면 오류가 난다.
수동으로 변경해주는 방법이 가장 좋다.

  • my_env.yaml
dependencies:
  - python=3.10
  - pip
  - pip:
    - torch==2.2.2
    - torchvision
    - torchaudio
    - --extra-index-url https://download.pytorch.org/whl/cu121

하지만 이 방법도 간혹 정상적으로 설치가 안되는 문제가 발생한다. 그냥 가상환경을 새롭게 만드는게 가장 깔끔하다.

방법목적권장 여부
conda env export 방식환경 복제, 공유, 배포✅ 매우 권장
conda clone 방식같은 시스템 내 빠른 복사⚠️ 제한적 사용
requirements.txt 방식pip 전용 환경 복제❌ conda 환경에 비권장

profile
精進 "정성을 기울여 노력하고 매진한다"

0개의 댓글