본문 바로가기

언어/Python

[ Python ] venv 가상환경으로 편리하게 사용하기

반응형

Python의 virtual environment (가상 환경)는 서로 다른 프로젝트에서 독립적인 Python 패키지 설정을 유지할 수 있도록 해주는 도구입니다. 이를 통해 프로젝트마다 필요한 패키지와 버전이 달라도 충돌 없이 관리할 수 있습니다. 특히, 여러 프로젝트를 작업할 때나 특정 패키지의 버전을 고정해야 할 때 유용합니다.

가상 환경 설정 및 사용법

1. Python의 venv 모듈 사용

Python 3.3 이후부터는 기본적으로 venv 모듈을 사용하여 가상 환경을 만들 수 있습니다. 아래는 가상 환경을 생성하고 사용하는 방법입니다.

1.1 가상 환경 생성

먼저, 프로젝트 디렉토리로 이동한 후 가상 환경을 생성합니다.

$ python -m venv myenv

위 명령어는 myenv라는 이름의 가상 환경을 생성합니다. 원하는 이름으로 변경할 수 있습니다.

1.2 가상 환경 활성화

가상 환경을 활성화해야 그 안에서 설치한 패키지를 사용할 수 있습니다. 운영체제에 따라 명령어가 다릅니다.

  • Windows:
$ myenv\Scripts\activate
  • macOS/Linux:
$ source myenv/bin/activate

활성화되면 프롬프트에 (myenv)가 표시되어 가상 환경이 활성화되었음을 알 수 있습니다.

1.3 패키지 설치

가상 환경이 활성화된 상태에서 pip 명령어를 사용해 패키지를 설치할 수 있습니다. 예를 들어 requests 패키지를 설치하려면 다음과 같이 합니다.

(myenv) $ pip install requests

1.4 가상 환경 비활성화

가상 환경을 비활성화하려면 다음 명령어를 사용합니다.

(myenv) $ deactivate

비활성화하면 다시 시스템의 기본 Python 환경으로 돌아갑니다.

2. virtualenv 패키지 사용

Python 3.3 이전 버전을 사용하거나 virtualenv를 선호하는 경우, virtualenv 패키지를 사용할 수 있습니다. 이 패키지는 Python의 가상 환경을 관리하는데 특화된 도구입니다.

2.1 virtualenv 설치

먼저 pip를 사용해 virtualenv를 설치합니다.

$ pip install virtualenv

2.2 가상 환경 생성

virtualenv를 사용하여 가상 환경을 생성합니다.

$ virtualenv myenv

이후의 활성화 및 비활성화 방법은 venv와 동일합니다.

3. 가상 환경에서 주의할 점

  1. 가상 환경을 항상 활성화해야 한다: 가상 환경에서 작업할 때는 항상 가상 환경을 활성화해야 합니다. 그렇지 않으면 전역 Python 패키지를 사용할 수 있습니다.
  2. 패키지 목록 저장 및 복원: 가상 환경에서 사용한 패키지 목록을 저장하고, 다른 개발 환경에서 동일한 패키지를 설치하려면 다음 명령어를 사용합니다.
    • 패키지 목록 저장:
(myenv) $ pip freeze > requirements.txt
  • 저장된 목록을 바탕으로 패키지 설치:
$ pip install -r requirements.txt

4. 예제

  1. 가상 환경을 만들어 requests 패키지를 설치하고 사용하는 예제를 보여드리겠습니다.
$ python -m venv myenv   # 가상 환경 생성
$ source myenv/bin/activate  # 가상 환경 활성화 (macOS/Linux)
(myenv) $ pip install requests  # requests 패키지 설치
(myenv) $ python  # Python 인터프리터 실행
# requests 사용 예제
import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # 200 출력
print(response.json())  # GitHub API의 응답 출력
  1. 가상 환경 비활성화:
(myenv) $ deactivate  # 가상 환경 비활성화

가상 환경을 활용하면 각 프로젝트마다 다른 패키지 버전을 관리하고, 충돌을 방지하면서도 효율적으로 Python 프로젝트를 진행할 수 있습니다.

반응형