파이썬과 R 개발 환경 설정하기

R
Package manager
Virtual environment
Bioconductor
Python
Tip
Data science
Author

Taeyoon Kim

Published

January 4, 2023

Modified

January 14, 2025

1 파이썬 설치하기

파이썬은 아주 인기있는 프로그래밍 언어로, 웹 사이트는 물론 게임, 과학용 소프트웨어, 그래픽 소프트웨어 등 다양한 것을 만들 수 있습니다. 파이썬은 1980 년대 후반에 귀도 반 로썸 프로그래밍 언어를 기계 뿐만 아니라 인간도 읽을 수 있도록 만들고자 탄생한 언어입니다. 파이썬이 다른 프로그래밍 언어보다 훨씬 간단하게 보이고, 배우기도 쉬운 이유도 그 때문이죠. 이를 바탕으로 과거 15 년 동안 numpy,scipy,matplotlib,jupyter 같이 널리 사용되는 패키지가 개발되어있습니다. 파이썬은 사용중인 OS 의 종류에 따라서 설치방법이 다릅니다.

  1. 사용 중인 컴퓨터 윈도우 운영체제가 32 비트인지 64 비트인지 확인하세요.
  2. 공식 웹사이트 에서 다운로드 할 수 있습니다.
  • 64 비트 버전의 Windows 인 경우 Windows x86-64 executable installer 를 다운로드하세요.
  • 32 비트 버전은 Windows x86 executable installer 을 다운로드하세요.
  1. 설치 프로그램을 다운로드 한 후에 실행 (더블 클릭) 하고 지시 사항을 따르세요.

공식 사이트 로 가서 파이썬 설치 파일을 다운 받으세요.

리눅스에는 이미 파이썬이 설치되어 있습니다. 터미널에 다음 명령어를 입력하면 설치된 버전을 확인 할 수 있습니다.

$ python3 --version

2 파이썬 가상환경과 패키지 매니저

파이썬 생태계의 패키지들은 서로 복잡한 의존성을 가지고 있어 많은 문제가 발생합니다. 따라서 항상 패키지 매니저를 사용하는 것을 권장합니다.

2.1 pip + virtualenv

pip와 virtualenv는 파이썬 개발 환경에서 가장 오래 사용되었고 또한 자주 사용되는 도구입니다. pip는 파이썬에 기본적으로 포함되어 있는 패키지 관리자로 PyPI(Python Package Index) 에 등록된 패키지를 설치하고 관리할 수 있습니다. virtualenv 는 가상 환경을 생성하여 프로젝트마다 독립된 파이썬 환경을 가질 수 있게 해주는 패키지입니다. 다른 프로젝트와 충돌 없이 패키지를 관리하려면 필수적으로 사용해야 합니다.

Warning

pip 는 아래와 같은 몇 가지 근본적인 문제를 가지고 있습니다.

  1. 의존성 충돌 (Dependency Conflicts) 여러 패키지를 설치할 때 각 패키지가 서로 다른 버전의 동일한 종속성을 요구할 경우 의존성 충돌이 발생하며 프로젝트에서 예기치 않은 동작이나 오류를 발생시킬 수 있습니다.
  2. 글로벌 설치 문제 기본적으로 pip 는 전역 파이썬 환경에 패키지를 설치합니다. 이로 인해, 여러 프로젝트에서 동일한 패키지 버전을 공유하게 되어 프로젝트 간에 종속성 충돌이 발생할 수 있습니다. 특히, 프로젝트마다 요구되는 패키지 버전이 다른 경우에 문제가 됩니다.
  3. 환경 관리의 어려움 pip 는 파이썬 환경을 별도로 관리하지 않으므로 전역 환경에 설치된 패키지들이 서로 영향을 미칠 수 있습니다. 이로 인해, 동일한 시스템에서 여러 프로젝트를 작업할 때 각 프로젝트의 요구 사항을 일관되게 유지하기 어려워집니다. 이를 해결하기 위해 virtualenv 와 같은 도구를 사용해 가상 환경을 생성해야 합니다.
  4. 보안 문제 pip 는 기본적으로 모든 패키지를 신뢰합니다. 악의적인 사용자가 배포한 패키지가 PyPI 에 업로드되면, 이를 설치하는 과정에서 보안 문제가 발생할 수 있습니다.
  5. 복잡한 패키지 관리 복잡한 프로젝트에서는 수많은 패키지와 버전들을 관리해야 하는데, pip 는 기본적으로 이러한 복잡한 종속성 트리를 관리하는 데 최적화되어 있지 않습니다. 이는 특정 패키지 설치 시 종속성 문제가 발생할 때 수동으로 해결해야 하는 번거로움으로 이어질 수 있습니다. 이러한 문제들로 인해, 많은 개발자들이 pipenv 또는 poetry 같은 도구들을 사용하여 환경과 패키지 관리를 하고 있습니다.

pip 는 파이썬에 기본적으로 설치되어 있어 상관이 없지만, virtualenv 는 pip 를 사용해 설치할 수 있습니다. 다음 단계를 따라 설치하면 됩니다. 먼저 터미널 (또는 명령 프롬프트) 을 열고 다음 명령어를 입력합니다. 이 명령어는 최신 버전의 virtualenv 를 설치합니다.

pip install virtualenv

virtualenv 가 올바르게 설치되었는지 확인하려면, 다음 명령어를 입력하여 버전을 확인할 수 있습니다.

virtualenv --version

버전 번호가 출력되면 virtualenv 가 성공적으로 설치된 것입니다.

2.1.1 가상환경

기본적으로 pip 는 전역 (global) 파이썬 환경에 패키지를 설치하기 때문에 필연적으로 의존성 문제가 발생합니다. 그러나 virtualenv 를 사용하면 각 프로젝트마다 별도의 가상 환경을 만들어 서로 다른 패키지 버전이나 설정을 유지할 수 있습니다. 이는 프로젝트 간의 종속성 충돌을 방지하고, 개발 환경을 안정적으로 유지하는 데 도움이 됩니다.

2.1.1.1 virtualenv 주요 커맨드

  1. virtualenv 설치bash pip install virtualenv

  2. 가상 환경 생성bash python -m virtualenv 가상환경명 가상환경명 은 원하는 이름으로 지정할 수 있습니다. 이 명령어는 가상환경명 이라는 폴더를 생성하고, 그 안에 독립된 파이썬 실행 파일과 pip 를 포함한 환경을 구성합니다.

  3. 가상 환경 활성화:

    • Windowsbash 가상환경명\Scripts\activate
    • Mac/Linuxbash source 가상환경명/bin/activate 가상 환경이 활성화되면, 터미널 프롬프트에 (가상환경명) 이 표시됩니다. 이 상태에서 pip 로 설치된 패키지는 전역 환경이 아닌 해당 가상 환경에 설치됩니다.
  4. 가상 환경 비활성화bash deactivate 가상 환경에서 벗어나기 위해 이 명령어를 사용합니다.

  5. 가상 환경 내 패키지 관리:

    • 패키지 설치bash pip install 패키지명 활성화된 가상 환경에 패키지를 설치합니다.
    • 설치된 패키지 목록 저장 (dependencies list): bash pip freeze > requirements.txt 현재 가상 환경에 설치된 모든 패키지의 목록을 requirements.txt 파일로 저장합니다.
    • 목록에 따른 패키지 설치bash pip install -r requirements.txt requirements.txt 파일에 기록된 패키지들을 한 번에 설치합니다.

2.1.2 의존성 관리하기

pip 는 다음과 같은 기능을 지원합니다:

  • 패키지 설치: 파이썬 패키지를 설치합니다.
  • 패키지 업그레이드: 기존에 설치된 패키지를 최신 버전으로 업그레이드합니다.
  • 패키지 제거: 더 이상 필요하지 않은 패키지를 삭제합니다.
  • 패키지 목록 보기: 현재 설치된 패키지의 목록을 볼 수 있습니다.

2.1.2.1 주요 pip 커맨드

  1. 패키지 설치bash pip install 패키지명
  2. 패키지 업그레이드bash pip install --upgrade 패키지명
  3. 패키지 제거bash pip uninstall 패키지명
  4. 설치된 패키지 목록 보기bash pip list
  5. 패키지의 특정 버전 설치bash pip install 패키지명==버전
Tip

가상환경과 라이브러리 관리 팁 1. 프로젝트마다 가상 환경 생성: 프로젝트를 시작할 때마다 새로운 가상 환경을 생성하여, 프로젝트 간에 라이브러리 충돌을 방지하는 것이 좋습니다. 2. requirements.txt 활용: 프로젝트의 의존성을 공유하거나 배포할 때 requirements.txt 파일을 사용하면, 다른 사람이 동일한 환경을 쉽게 설정할 수 있습니다. 3. 가상 환경 폴더 관리virtualenv 로 생성된 가상 환경 폴더는 일반적으로 프로젝트 폴더 내에 두거나, 중앙 관리 폴더를 만들어 관리할 수 있습니다.

2.2 Conda

conda 는 패키지 매니저로 가상환경을 만들고 파이썬 패키지의 의존성을 관리하고, 설치, 삭제, 업데이트 등을 할 수 있습니다. conda 는 기본적으로 Anaconda 라는 파이썬 기반의 데이터 분석에 특화된 각종 패키지를 모아놓은 플랫폼에서 개발되었습니다. 다시말해 Anaconda 를 설치하면 자동으로 conda 도 설치가 됩니다.

만약 Anaconda 에서 패키지 관리 메니저인 conda 만을 설치 하고 싶다면 miniconda 를 설치 하면 됩니다. 저는 개인적으로 Miniconda 를 사용하는 것을 추천합니다. Anaconda 는 라이센스 문제와 설치 용량이 크다는 단점이 있기 때문입니다.

2.2.1 Conda 사용법

2.2.1.1 가상환경

새로운 프로젝트를 시작할때면 항상 새로운 가상환경을 만들어 작업하는것이 좋습니다. 새로운 가상환경 ENV_NAME 을 만드는 예시를 들어보겠습니다.

  1. 터미널에 다음과 같이 입력해 새로운 가상환경을 만듭니다.
conda env create -n ENV_NAME
conda env create -n ENV_NAME -f requirements.txt # 의존성 파일로 부터 가상환경을 만들때 사용하는 코드
  1. 가상환경을 사용하기 위해서는 활성화 (activate) 시켜줘야 합니다. 활성화되면 터미널에 (ENV_NAME) 이 표시됩니다.
conda activate ENV_NAME
  1. 만약 가상환경을 종료하고 싶다면 비활성화 (deactivate) 하면 됩니다.
conda deactivate
  1. 이미 생성한 가상환경의 목록은 다음과 같이 확인 할 수 있습니다.
conda env list
  1. 생성한 가상환경을 제거하는 명령어는 다음과 같습니다.
conda env remove -n ENV_NAME

2.2.1.2 의존성 관리하기

자주 사용하는 conda 명령어는 아래와 같습니다. 예시로 numpy 를 설치하는 상황을 가정합니다.

기능 명령어
패키지 설치 conda install numpy
동시에 여러 패키지를 설치 conda install numpy scipy pandas
특정 버전 설치 conda install “numpy=1.10”
패키지 제거 conda remove numpy
패키지 업데이트 conda update numpy
모든 패키지 업데이트 conda update –all
설치된 목록 출력 conda list
설치하려는 패키지 검색 conda search numpy

만약 Conda 에서 패키지를 찾을 수 없다면 pip 을 사용해보세요

2.2.2 Conda 제거하기

만약 conda 를 제거하고 싶다면 다음과 같이 하면 됩니다.

제어판에 들어가서 Python(Anaconda) 혹은 Python(Miniconda) 를 제거합니다.

단순하게 아래 디렉토리만 삭제하면 됩니다.

rm -rf ~/miniconda
rm -rf ~/anaconda

3 R 설치하기

R 은 주로 데이터 분석, 통계 모델링, 시각화 작업에 사용되며 다양한 통계 기법을 제공합니다. R 은 연구자, 통계학자, 데이터 과학자들 사이에 널리 사용되며 데이터를 탐색하고 모델링하며 결과를 시각적으로 표현하는 데 매우 유용합니다. R 문법과 통계처리 부분은 AT&T 벨 연구소가 개발했던 S 를 참고해 만들어졌습니다.

  1. CRAN 웹사이트 방문:
    • R 의 공식 배포 사이트인 CRAN(Comprehensive R Archive Network) 에서 설치 파일을 다운로드할 수 있습니다. CRAN 웹사이트를 방문합니다.
  2. R 다운로드:
    • CRAN 홈페이지에서 Download R for Windows 링크를 클릭합니다.
    • 이후 base 링크를 선택하여 R 의 기본 설치 파일을 다운로드합니다.
  3. 설치 파일 실행:
    • 다운로드한 .exe 파일을 실행합니다.
    • 설치 마법사가 시작되며 기본 설정을 따라 설치를 진행합니다. 특별히 변경할 사항이 없으면 기본값을 그대로 사용해도 됩니다.
  4. R 실행:
    • 설치가 완료되면, Windows 의 시작 메뉴에서 R 을 실행할 수 있습니다. 기본적인 콘솔이 실행됩니다.
  1. CRAN 웹사이트 방문:
    • macOS 사용자도 CRAN 웹사이트에서 R 설치 파일을 다운로드합니다.
  2. R 다운로드:
    • Download R for macOS 링크를 클릭합니다.
    • 이후 적절한 R 버전의 .pkg 파일을 다운로드합니다.
  3. 설치 파일 실행:
    • 다운로드한 .pkg 파일을 실행하여 설치를 진행합니다.
    • 설치 과정에서 여러 단계를 거치며 기본값으로 진행하면 됩니다.
  4. R 실행:
    • 설치가 완료되면 응용 프로그램 폴더에서 R 을 실행할 수 있습니다.

Linux 에서는 보통 패키지 관리자를 통해 R 을 설치합니다. 여기서는 우분투 (Ubuntu) 를 예로 들어 설명하겠습니다.

  1. 리포지토리 업데이트:
    • 터미널을 열고 시스템 패키지 목록을 업데이트합니다.

      sudo apt update
  2. R 설치:
    • 기본 패키지 관리자를 사용하여 R 을 설치합니다.

      sudo apt install r-base
  3. R 실행:
    • 설치가 완료되면, 터미널에서 R 명령어를 입력하여 콘솔을 실행할 수 있습니다.

      R

3.1 RStudio 설치

R 의 기본 콘솔 외에 통합 개발 환경 (IDE) 를 사용하고 싶다면 RStudio 를 설치할 수 있습니다. 다만 개인용도로만 무료임으로 라이센스를 항상 확인하세요.

  1. RStudio 다운로드:
  2. RStudio 설치:
    • 다운로드한 파일을 실행하여 설치를 진행합니다. 설치 과정은 간단하며, 기본값으로 진행하면 됩니다.
  3. RStudio 실행:
    • 설치가 완료되면, RStudio 를 실행하여 R 환경을 더욱 효율적으로 사용할 수 있습니다.

4 R 가상환경과 패키지 관리 매니저

R 또한 다양한 패키지를 사용하여 분석 작업을 수행합니다. 따라서 패키지 관리와 가상환경 설정을 통해 서로 다른 프로젝트 간의 의존성 충돌을 방지하고 일관된 환경을 유지하는 것이 중요합니다.

4.1 가상환경

4.1.1 renv

renv 는 R 의 가상환경 관리 도구로, Python 의 virtualenv 나 conda 와 유사한 역할을 합니다. renv 는 각 프로젝트마다 독립된 라이브러리 환경을 설정하여, 서로 다른 프로젝트에서 사용하는 패키지가 충돌하지 않도록 도와줍니다.

renv 의 주요 기능

  • 프로젝트별로 패키지 라이브러리 폴더를 생성하여, 각 프로젝트마다 고유한 환경을 유지.
  • renv.lock 파일을 사용하여 프로젝트에 필요한 패키지 버전과 의존성을 기록.
  • renv 를 사용하면 특정 시점의 패키지 상태를 다른 시스템에서 동일하게 재현 가능.
  1. renv 설치:

    install.packages("renv")
  2. 프로젝트 초기화: 프로젝트 디렉토리에서 renv 를 초기화합니다. 이는 새로운 가상환경을 생성하고, renv.lock 파일을 생성합니다.

    renv::init()
  3. 패키지 설치: 일반적인 방법으로 패키지를 설치하면 해당 패키지는 현재 renv 환경에 설치됩니다.

    install.packages("ggplot2")
  4. 환경 스냅샷 생성: 프로젝트의 현재 상태를 기록하여 renv.lock 파일에 저장합니다.

    renv::snapshot()
  5. 환경 복원: 다른 시스템에서 동일한 환경을 재현하기 위해, renv.lock 파일을 사용하여 패키지 환경을 복원합니다.

    renv::restore()
  6. 가상환경 해제: 프로젝트의 가상환경을 해제하고 전역 라이브러리를 사용하도록 변경합니다.

    renv::deactivate()

4.2 의존성 관리하기

4.2.1 CRAN

대부분의 R 패키지는 CRAN(Comprehensive R Archive Network) 을 통해 설치 및 관리됩니다. CRAN 은 R 패키지의 공식 저장소로 일반적인 분석 작업에 필요한 대부분의 패키지를 제공합니다.

4.2.1.1 주요 CRAN 커맨드

  • install.packages(): 기본적으로 CRAN 에서 패키지를 설치하는 함수입니다.
  • library(): 패키지를 로드하는 함수입니다. 한 번 설치된 패키지는 프로젝트에서 사용할 때마다 library(패키지명) 을 통해 불러올 수 있습니다.
  • update.packages(): 설치된 모든 패키지를 최신 버전으로 업데이트하는 함수입니다.
  • remove.packages(): 설치된 패키지를 제거하는 함수입니다.

4.2.2 Bioconductor: 생물정보학용 패키지 매니저

생물정보학 연구에서 자주 사용되는 R 패키지는 Bioconductor 를 통해 관리됩니다. Bioconductor 는 CRAN 을 통해 설치해 사용할 수 있습니다. 주요 명령어는 아래와 같습니다.

  1. BiocManager 설치:

    install.packages("BiocManager")
  2. Bioconductor 패키지 설치:

    BiocManager::install("패키지명")
  3. Bioconductor 패키지 제거

특정 Bioconductor 패키지를 제거하려면 remove.packages() 함수를 사용합니다:

remove.packages("패키지명")
  1. 특정 Bioconductor 버전을 사용하고 싶다면 (예: 3.13):
BiocManager::install(version = "3.13")
  1. Bioconductor 패키지 검색

Bioconductor 에서 특정 패키지를 검색하려면:

BiocManager::available("패키지명")

이러한 명령어들을 활용하면 Bioconductor 패키지를 효과적으로 관리하고, 필요한 생물정보학 도구들을 손쉽게 사용할 수 있습니다.