2. 파이썬 가상환경 Last updated: 2023-10-17 10:28:10

파이썬에서 가상 환경을 만드는 것은 개발하는 프로그램에 따라 서로 독립적인 공간을 만들고, 각자 필요한 패키지를 설치할 수 있기 때문에 매우 편리한다. 만일 가상 환경을 만들지 못하고 컴퓨터 상에 단 하나의 파이썬 개발 환경만 가지고 있다면 각 프로그램에서 필요로 하는 패키지가 점점 많아지게 되고, 각 패키지 별로 버전 이슈가 발생하면 이를 해결하기가 매우 어렵게 된다. 따라서 가상 환경은 패키지의 버전과 타른 패키지와의 의존성을 관리하기 위해 매우 중요한 기능이다. 이번 단원에서는 파이썬에서 가상 환경을 만드는 방법과 이를 활용하는 방법에 대해 알아보자.

1.1 가상환경 만들기

파이썬에서 가상 환경을 만드는 방법은 여러가지가 있다. 그 중에서 가장 많이 활용하는 방법은 venv 명령을 사용하는 방법과 Anaconda를 사용하는 방법이다. Anaconda를 이용해 가상 환경을 만들고 필요한 패키지를 설치하는 방법에 대해서는 2.3 Anaconda 설치 및 사용에서 자세히 설명한다. 지금은 venv 명령을 이용하는 방법에 대해 설명한다. venv는 파이썬 3.0부터 기본적으로 설치되는 가상 환경 관리를 위한 프로그램이다. 그러므로 venv를 사용하는 것이 좋다.


1.1.1 명령 창에서 가상 환경 생성

venv를 사용해 가상 환경을 생성하려면 명령 창을 실행해야 한다. 윈도우 명령창(cmd.exe)를 실행하고, 가상 환경을 생성할 위치로 이동한다. 가상 환경은 지정한 이름의 폴더가 생성되고 그 아래 필요한 파이썬 실행에 필요한 파일들이 생성된다. 다음은 가상 환경을 생성하는 명령이다. 가상환경의 이름은 식별이 가능하고 폴더 이름으로 사용이 가능한 이름을 입력하면 된다. 보통은 영어 알파벳과 밑줄(’_’)를 조합하여 사용한다.

형식

python -m venv {가상환경 이름}

이제 실제로 가상 환경을 만들어 보자.

다음은’c:python_project’ 폴더 아래 ‘test_env’ 라는 이름의 가상 환경을 만드는 예시이다.

> cd c:/python_project
> python –m venv test_env

가상 환경 생성이 완료되면 아래와 같이 ‘test_env’ 폴더 아래 다음과 같이 파이썬 실행을 위한 파일이 준비되어 있는 것을 확인할 수 있다.


image

[그림 2-2-1] 가상환경이 생성된 폴더의 구조



1.2. 가상 환경 활성화

이제 생성한 가상 환경을 사용해볼 차례이다. 가상 환경을 만들었다고 해서 그냥 사용할 수 있는 것은 아니다. 해당 파이썬 가상 환경을 기본으로 사용하도록 활성화를 해주어야 한다. 다음 명령은 가상 환경을 활성화 하는 명령이다. 이 명령은 생성한 가상 환경 폴더 내에서 실행해야 한다. 윈도우인 경우 ‘{가상 환경 폴더}/Scripts/’ 경로 안에서 activate 명령을 실행해야 하고, 리눅스나 맥 운영체제인 경우 ‘{가상 환경 폴더}/bin/’ 경로 안에서 activate 명령을 실행해야 한다.

> activate.bat

위에서 생성한 ‘test_env’에 대해 활성화하는 예시는 다음과 같다.

> cd c:/python_project/test_env/Scripts
> activate 
(test_env) >

가상 환경을 활성화 하면 명령 프롬프트 맨 앞에 ‘(test_env)’와 같이 가상 환경 이름이 표시된다. 이름을 통해 현재 어떤 가상 환경이 활성화 되어 있는지 확인하여 실수가 없도록 한다.



1.3. 패키지 목록 확인하기

가상 환경 내에 설치되어 있는 패키지 목록을 저장해 두면 이후에 동일한 환경을 다시 생성할 수 있다. 가상 환경 내에서 설치되어 있는 패키지의 목록과 버전을 저장하는 명령은 pip 명령의 freeze 옵션을 사용하면 된다. 현재 패키지 목록을 저장하는 명령은 다음과 같다. 뒤쪽의 ‘> requirements.txt’는 도스 명령으로 결과를 화면에 표시하지 말고 파일로 출력하라는 의미이다.

(test_env > pip freeze > requirements.txt

이렇게 하면 현재 활성화된 가상 환경 내에 설치된 패키지의 목록을 requirements.txt 파일에 저장하게 된다. requirements.txt 파일을 열어보면 다음과 같이 설치된 패키지명과 버전 정보를 확인할 수 있다.


[파일 1] requirements.txt

numpy==1.24.3



1.4. 동일한 가상 환경 만들기

경우에 따라 새로운 컴퓨터 환경에서 가상 환경을 동일하게 만들어야 할 때가 있다. 여러 대의 컴퓨터에서 개발을 동시에 진행하거나, 여러명이 함께 작업을 하는 경우도 있고, 개발의 환경을 운영 환경에 동일하게 구축해야 하는 경우가 있다. 이러한 경우 가상 환경을 이용하면 된다. 아래의 단계를 거쳐 다른 컴퓨터 환경에 동일한 파이썬 동작 환경을 구축할 수 있다. 1번 컴퓨터의 파이썬 가상 환경을 2번 컴퓨터에 동일하게 생성하는 예를 들어 설명하니 참고하기 바란다.


1단계: 파이썬 설치

1번 컴퓨터에 파이썬을 설치한다. 이때 주의할 점은 설치하는 파이썬의 버전이다. 다른 컴퓨터에서도 설치해야 하니 각 운영체제와 향후 설치해야 하는 중요한 패키지가 지원하는 파이썬 버전 등을 고려해 정해 주어야 한다. 만일 TensorFlow와 같은 딥러닝 패키지를 사용하려고 한다면 TensorFlow가 지원하는 파이썬 버전을 먼저 확인한다.

Hint! TensorFlow 설치할 때 파이썬 버전

23년 4월 현재 TensorFlow에서 지원하는 Python 버전은 3.6 ~ 3.9이고, Ubuntu는 16.04이상의 버전, macOS는 10.12.6(Sierra) 버전 이상이다. 하지만 현재 Python의 최신 버전은 3.11.3이다. 무턱대고 가장 최신의 파이썬 버전을 설치 했다가는 TensorFlow와 호환성 문제로 곤란을 격을 수 있으니 주의해야 한다.

참조: https://www.tensorflow.org/install?hl=ko



2단계: 가상 환경 생성

첫 번째 컴퓨터에 파이썬 가상 환경을 생성한다. 앞에서 가상 환경을 생성하는 방법에 대해 배웠으니 참고하시면 된다. 이미 가상 환경이 생성되어 있다면 이 단계를 지나가시면 된다.


3단계: 필요한 패키지 설치

이제 생성된 가상 환경을 활성화 하고, 개발을 위해 필요한 파이썬 패키지를 설치한다. 패키지를 설치할 때는 각 패키지들의 호환성을 잘 고려하여 버전을 지정해 설치할 것을 추천 한다. 간단히 몇 개의 패키지를 설치할 때는 다시 만들면 그만 이지만 이미 많은 패키지가 설치되어 있는 경우 패키지 호환성 문제로 나중에 추가적인 패키지 설치에 곤란을 격을 수 있다.


4단계: 패키지 목록을 requirements.txt 파일로 출력

필요한 패키지 설치가 완료 되었다면 이제 pip freeze 명령을 이용해 requirements.txt 파일을 생성한다. (사실, requirements.txt파일의 형식만 맞춘다면 pip freeze 명령을 사용하지 않고, 설치를 필요로 하는 패키지 목록을 사용자가 직접 작성할 수도 있다. 왜냐하면 중요한 패키지들만 설치되면 나머지 의존성 있는 패키지들은 알아서 같이 설치되기 때문이다. pip freeze를 통해 생성한 패키지 목록은 설치된 모든 패키지 목록을 생성하므로 너무 과하기 때문이다.)


5단계: 새로운 컴퓨터에 가상 환경 생성

이제 2번 컴퓨터에 1번과 동일한 환경을 구축할 단계이다. 1번과 동일하게 파이썬 버전을 맞추어 파이썬을 설치하고, 가상 환경을 생성한다.


6단계: requirements.txt 이용해 패키지 설치

가상 환경을 활성화 한 이후 다음의 명령을 이용해 패키지를 설치한다. 부디 한번에 패키지 설치를 완료했기를 기도한다.

(test_evn) > pip install -r requirements.txt

Hint! requirements.txt 파일로 설치할 때 주의할 점

requirements.txt를 이용해 패키지를 설치할 때 주의할 것이 있다. requirements.txt를 생성할 때 목록에 명시된 패키지의 순서는 실제 설치할 때의 순서와는 상관이 없다. 따라서, requirements.txt 파일을 이용해 다시 패키지를 설치하려고 할 때는 처음의 설치 순서와 다를 수 있다. 경우에 따라 패키지 설치 순서가 뒤바뀌면 패키지 설치에 문제가 생기기도 한다. 왜냐하면 패키지들은 설치할 때 의존성 있는 패키지가 없으면 자동으로 설치하는데, 이때 원하는 버전의 패키지가 설치되지 않을 수 있기 때문이다. 이럴 때는 처음 패키지를 설치할 때의 조건과 순서를 잘 기록했다가 재현하거나, requirements.txt 파일을 원하는 패키지 순서대로 수정해 해결할 수 있다.