Python 가상 환경 활성화 및 비활성화 방법

PythonBeginner
지금 연습하기

소개

Python 가상 환경은 Python 프로젝트에서 의존성을 관리하는 데 필수적인 도구입니다. 가상 환경은 시스템의 전역 Python 설치에 영향을 주지 않고 패키지를 설치할 수 있는 격리된 공간을 생성합니다. 이러한 격리는 동일한 패키지의 다른 버전을 필요로 할 수 있는 서로 다른 프로젝트 간의 충돌을 방지하는 데 도움이 됩니다.

이 Lab 에서는 Python 가상 환경을 생성, 활성화 및 비활성화하는 방법을 배우게 됩니다. 이러한 기술은 Python 개발자에게 기본이며, 프로젝트에 대한 깨끗하고, 체계적이며, 재현 가능한 개발 환경을 유지하는 데 도움이 될 것입니다.

Python 가상 환경 이해 및 생성

가상 환경을 생성하기 전에 Python 가상 환경이 무엇이며 왜 중요한지 이해하는 것부터 시작해 보겠습니다.

Python 가상 환경이란 무엇인가요?

Python 가상 환경은 격리된 Python 인터프리터 설치입니다. 가상 환경을 활성화하면 설치하는 모든 패키지가 시스템 전체 Python 설치가 아닌 해당 환경의 개인 디렉토리에 배치됩니다. 이러한 격리는 다음과 같은 여러 가지 이점을 제공합니다.

  • 서로 다른 프로젝트에 대해 동일한 패키지의 다른 버전을 사용할 수 있습니다.
  • 필요한 패키지의 정확한 목록을 다른 사람과 쉽게 공유할 수 있습니다.
  • 시스템 Python 을 깨끗하고 체계적으로 유지할 수 있습니다.

첫 번째 가상 환경 생성

Python 3.3 이상에는 가상 환경을 생성하는 데 권장되는 도구인 venv 모듈이 포함되어 있습니다. 첫 번째 가상 환경을 만들어 보겠습니다.

  1. 먼저, 프로젝트 디렉토리에 있는지 확인합니다.

    mkdir -p ~/project/python_env_demo
    cd ~/project/python_env_demo
  2. 다음을 실행하여 myenv라는 새 가상 환경을 생성합니다.

    sudo apt-get update
    sudo apt-get install python3.10-venv -y
    python3 -m venv myenv
  3. 생성된 내용을 살펴보겠습니다.

    ls -la myenv

    다음과 유사한 출력이 표시되어야 합니다.

    total 20
    drwxrwxr-x 5 labex labex 4096 Sep 14 10:00 .
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 ..
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 bin
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 include
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 lib
    -rw-rw-r-- 1 labex labex   70 Sep 14 10:00 pyvenv.cfg

venv 명령은 여러 하위 디렉토리가 있는 myenv라는 디렉토리를 생성했습니다. 가장 중요한 디렉토리는 다음과 같습니다.

  • bin: Python 인터프리터, pip 및 활성화 스크립트가 포함되어 있습니다.
  • lib: 이 환경에 설치된 패키지가 포함되어 있습니다.
  • pyvenv.cfg: 가상 환경의 구성 파일입니다.

이제 활성화하여 사용할 준비가 된 Python 가상 환경을 성공적으로 생성했습니다.

Python 가상 환경 활성화

이제 가상 환경을 생성했으므로 사용하기 전에 활성화해야 합니다. 활성화는 셸의 환경 변수를 수정하여 시스템 전체 Python 설치 대신 가상 환경의 Python 인터프리터 및 패키지를 사용하도록 합니다.

가상 환경을 활성화하는 방법

  1. 프로젝트 디렉토리에 있는지 확인합니다.

    cd ~/project/python_env_demo
  2. 다음을 실행하여 가상 환경을 활성화합니다.

    source myenv/bin/activate
  3. 명령 프롬프트가 변경된 것을 확인합니다. 이제 프롬프트 시작 부분에 괄호 안에 가상 환경의 이름이 표시됩니다.

    (myenv) labex:python_env_demo/ $

    이 시각적 표시기는 가상 환경 내에서 작업하고 있음을 기억하는 데 도움이 됩니다.

활성화 확인

가상 환경이 활성화되어 올바르게 작동하는지 확인하려면 다음을 확인할 수 있습니다.

  1. 어떤 Python 인터프리터가 사용되고 있는지:

    which python

    다음과 같은 출력이 표시되어야 합니다.

    /home/labex/project/python_env_demo/myenv/bin/python

    이는 python 명령이 이제 시스템 전체 인터프리터가 아닌 가상 환경의 Python 인터프리터를 가리킨다는 것을 보여줍니다.

  2. 어떤 pip (Python 패키지 설치 관리자) 가 사용되고 있는지:

    which pip

    다음과 같은 출력이 표시되어야 합니다.

    /home/labex/project/python_env_demo/myenv/bin/pip

    이는 시스템 Python 이 아닌 가상 환경에 패키지를 설치하게 됨을 확인합니다.

  3. Python 버전 확인:

    python --version

    출력은 가상 환경에서 사용되는 Python 버전을 표시합니다.

이제 Python 가상 환경을 성공적으로 활성화했습니다. 실행하는 모든 Python 명령과 설치하는 모든 패키지는 시스템의 Python 설치가 아닌 이 격리된 환경을 사용합니다.

가상 환경에 패키지 설치

가상 환경의 주요 이점 중 하나는 시스템 전체 Python 설치와 격리된 Python 패키지를 설치하고 관리할 수 있다는 것입니다. 활성화된 가상 환경에 패키지를 설치하는 방법을 살펴보겠습니다.

pip 로 패키지 설치

  1. 가상 환경이 여전히 활성화되어 있는지 확인합니다. 명령 프롬프트 시작 부분에 (myenv)가 표시되어야 합니다. 활성화되지 않은 경우 다음을 사용하여 활성화합니다.

    source myenv/bin/activate
  2. HTTP 요청을 만드는 데 일반적으로 사용되는 requests라는 간단한 패키지를 설치해 보겠습니다.

    pip install requests

    다운로드 및 설치 프로세스를 보여주는 출력이 표시됩니다.

  3. 설치된 패키지 목록을 확인하여 패키지가 설치되었는지 확인합니다.

    pip list

    requests 및 해당 종속성이 목록에 표시되어야 합니다.

    Package            Version
    ------------------ ---------
    certifi            2025.1.31
    charset-normalizer 3.4.1
    idna               3.10
    pip                22.0.2
    requests           2.32.3
    setuptools         59.6.0
    urllib3            2.3.0

설치된 패키지 사용

requests 패키지를 테스트하기 위해 간단한 Python 스크립트를 만들어 보겠습니다.

  1. 편집기를 열고 ~/project/python_env_demo 디렉토리에 test_requests.py라는 새 파일을 만듭니다.

    import requests
    
    response = requests.get('https://httpbin.org/get')
    print(f"Status Code: {response.status_code}")
    print(f"Content Type: {response.headers['content-type']}")
    print("\nResponse Body Preview:")
    print(response.text[:300] + "...")
  2. 파일을 저장하고 실행합니다.

    python test_requests.py
    run test_requests.py
  3. 다음과 유사한 출력이 표시되어야 합니다.

    Status Code: 200
    Content Type: application/json
    
    Response Body Preview:
    {
    "args": {},
    "headers": {
    "Accept": "_/_",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.32.3",
    "X-Amzn-Trace-Id": "Root=1-67ca4e9a-3b65928a0af016e74bc867b7"
    },
    "origin": "47.251.8.222",
    "url": "https://httpbin.org/g...

이는 requests 패키지가 가상 환경에 성공적으로 설치되었으며 올바르게 작동하고 있음을 보여줍니다.

Python 가상 환경 비활성화

가상 환경으로 작업하는 것을 마치면 시스템의 전역 Python 환경으로 돌아가고 싶을 수 있습니다. 이 프로세스를 비활성화라고 합니다.

가상 환경을 비활성화하는 방법

  1. 현재 가상 환경이 활성화되어 있는지 확인합니다. 명령 프롬프트 시작 부분에 (myenv)가 표시되어야 합니다.

  2. 가상 환경을 비활성화하려면 다음을 실행하기만 하면 됩니다.

    deactivate
  3. 명령 프롬프트가 정상으로 다시 변경된 것을 확인합니다. (myenv) 접두사가 사라졌습니다.

    labex:python_env_demo/ $

비활성화 확인

가상 환경이 비활성화되었고 시스템 Python 을 다시 사용하고 있는지 확인하려면 다음 검사를 실행합니다.

  1. 어떤 Python 인터프리터가 사용되고 있는지 확인합니다.

    which python3

    다음과 같은 출력이 표시되어야 합니다.

    /usr/bin/python3

    이는 python3 명령이 이제 시스템 전체 Python 인터프리터를 가리킨다는 것을 보여줍니다.

  2. 앞에서 만든 스크립트를 실행해 봅니다.

    python3 test_requests.py

    requests 패키지가 시스템 Python 에 설치되어 있는지 여부에 따라 오류가 표시될 수 있습니다.

    Traceback (most recent call last):
      File "/home/labex/project/python_env_demo/test_requests.py", line 1, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'

    이 오류는 requests 패키지가 시스템 Python 이 아닌 가상 환경에 설치되었기 때문에 발생합니다. 이것이 가상 환경의 주요 이점 중 하나입니다. 즉, 서로 다른 프로젝트에 대한 패키지를 격리하는 것입니다.

가상 환경 재활성화

프로젝트로 다시 작업해야 하는 경우 가상 환경을 쉽게 다시 활성화할 수 있습니다.

source myenv/bin/activate

명령 프롬프트에 다시 (myenv)가 표시되어 가상 환경이 활성화되었음을 나타냅니다.

일반적인 가상 환경 명령 요약

다음은 다룬 명령에 대한 빠른 참조입니다.

명령 설명
python3 -m venv myenv "myenv"라는 새 가상 환경을 만듭니다.
source myenv/bin/activate 가상 환경을 활성화합니다.
pip install package_name 활성 가상 환경에 패키지를 설치합니다.
pip list 활성 가상 환경에 설치된 패키지를 나열합니다.
deactivate 현재 가상 환경을 비활성화합니다.

이러한 명령은 Python 가상 환경으로 작업하는 기반을 형성하여 프로젝트에 대해 격리된 Python 환경을 생성, 사용 및 관리할 수 있도록 합니다.

요약

이 랩에서는 Python 가상 환경으로 작업하는 데 필요한 필수 기술을 배웠습니다.

  • 가상 환경의 개념과 이점 이해
  • venv 모듈을 사용하여 새 가상 환경 만들기
  • Python 작업을 격리하기 위해 가상 환경 활성화
  • pip 를 사용하여 가상 환경 내에 패키지 설치
  • 간단한 Python 스크립트로 설치된 패키지 테스트
  • 작업이 끝나면 가상 환경 비활성화

이러한 기술은 훌륭한 Python 개발 관행의 기초를 형성합니다. 가상 환경을 사용하면 다음을 수행할 수 있습니다.

  • 프로젝트의 종속성을 서로 격리 유지
  • 서로 다른 버전의 패키지 간의 충돌 방지
  • 프로젝트를 더 재현 가능하고 쉽게 공유할 수 있도록 만들기
  • 깨끗하고 체계적인 Python 개발 환경 유지

가상 환경은 초보자부터 전문가까지 모든 수준의 Python 개발자에게 필수적인 도구입니다. Python 여정을 계속 진행하면서 가상 환경을 사용하는 것은 개발 워크플로의 자연스러운 부분이 될 것입니다.