Python에서 가상 환경 시작하기
게시 됨: 2022-11-07이 기사에서는 Windows 및 Linux 운영 체제 모두에서 Python으로 가상 환경을 시작하는 방법을 배웁니다.
로컬 개발 환경에서 여러 프로젝트 작업을 시작하면 종속성 문제가 자주 발생합니다. 각 프로젝트에 대한 가상 환경을 생성하면 종속성과 프로젝트 요구 사항을 더 잘 관리하는 데 도움이 될 수 있습니다.
Python에서 가상 환경의 이점을 활용하기 위해 가상 환경을 만들고 활성화하는 방법을 알아보겠습니다.
가상 환경이란 무엇입니까?
가상 환경 은 프로젝트의 코드와 종속성을 포함하는 격리되고 독립적인 환경입니다.
하지만 왜 가상 환경을 사용해야 합니까?
음, 가상 환경을 사용하면 다양한 프로젝트에 대해 동일한 라이브러리의 다른 버전을 설치하고 사용할 수 있습니다. 또한 가상 환경을 사용하면 둘 이상의 프로젝트에서 서로 다른 버전을 사용할 때 주요 변경 사항이 발생하지 않습니다. 이것을 더 자세히 이해합시다.
Python에서 패키지 설치
Python 표준 라이브러리는 단위 테스트, 운영 체제와의 상호 작용, 날짜 및 시간 작업 등에 유용한 여러 모듈과 함께 제공됩니다.
그러나 Python 프로젝트에서 작업할 때 Python 커뮤니티에서 개발한 다른 패키지를 설치해야 하는 경우가 많습니다. 이는 특히 데이터 수집을 위한 웹 스크래핑, 기계 학습 및 웹 애플리케이션과 같은 애플리케이션에 해당됩니다.
이러한 패키지를 설치하고 관리하려면 conda 또는 pip를 사용할 수 있습니다.
각 프로젝트에는 설치해야 하는 특정 패키지 세트가 필요합니다. 그러나 개발 환경의 모든 패키지를 로컬 시스템에 설치하면 모든 프로젝트가 전역적으로 설치된 패키지를 공유합니다.

왜 이것이 문제입니까?
개발 환경에 N개의 패키지가 있을 수 있습니다. 그러나 현재 작업 중인 프로젝트에는 3개만 필요할 수 있습니다. 모든 프로젝트가 공통 설치를 공유하는 경우 설치된 패키지 중 어떤 프로젝트가 필요한지, 즉 각 프로젝트와 관련된 종속성을 식별하는 것은 매우 어렵습니다.
이 접근 방식에는 또 다른 제한 사항이 있습니다. 프로젝트 라이브러리에 Django 2.2 프로젝트가 있다고 가정합니다. Django 4를 사용하는 프로젝트에서 작업을 시작하기로 결정했습니다. 따라서 동일한 개발 환경에 최신 버전의 Django를 설치합니다.
기존 설치는 어떻게 됩니까?
제거되고 설치한 Django 버전으로 대체됩니다. 최신 안정 릴리스에서는 특정 기능이 더 이상 사용되지 않을 수 있습니다. 그리고 이전 Django 프로젝트가 예상대로 작동하지 않을 수 있습니다.

지금까지의 논의를 요약하면 프로젝트를 실행하려면 자체 라이브러리 세트가 필요하기 때문에 패키지가 모두 공통 환경에 설치되면 종속성 관리가 어려워집니다.
가상 환경의 작동 방식
지금까지 글로벌 개발 환경(시스템 전체 설치)에 패키지를 설치하는 것과 관련된 문제를 살펴보았습니다. 이것은 가상 환경이 이 제한을 어떻게 해결하는지 이해하도록 동기를 부여합니다.
Python 프로젝트에 대한 가상 환경을 만들고 활성화할 때 현재 프로젝트에 필요한 패키지 만 설치할 수 있습니다.

가상 환경을 사용하여 Django 프로젝트 예제를 다시 방문하면 Django 2.2 및 Django 4 프로젝트를 충돌 없이 실행할 수 있습니다. 이는 Django 설치가 더 이상 시스템 전체 설치가 아니라 각 프로젝트의 가상 환경에 국한되기 때문입니다.
본질적으로 가상 환경은 프로젝트에 대한 코드와 종속성을 모두 포함하는 격리된 환경입니다.
가상 환경의 장점

이제 Python에서 가상 환경이 작동하는 방식을 배웠으므로 가상 환경을 사용할 때의 이점을 열거해 보겠습니다.
- 가상 환경은 개별 프로젝트에 대해 격리된 개발 환경 을 제공하므로 특정 프로젝트에 필요한 패키지만 설치할 수 있습니다.
- 프로젝트의 가상 환경은 독립적이고 격리되어 있으므로 요구 사항에 따라 다른 프로젝트에서 동일한 라이브러리의 다른 버전을 사용할 수 있습니다. 가상 환경을 사용하면 라이브러리를 설치하고 개발 환경을 설정하기 위한 시스템 권한에 대해 걱정할 필요가 없습니다.
- 가상 환경에 패키지를 설치한 후에는 requirements.txt 파일에서 프로젝트의 종속성을 캡처 할 수 있습니다. 이를 통해 다른 개발자는 프로젝트의 개발 및 환경을 복제하고 단일 명령을 사용하여 필요한 패키지를 설치할 수 있습니다.
가상 환경을 만드는 도구

지금까지 가상 환경이 작동하는 방식과 가상 환경을 사용할 때의 이점을 배웠습니다. Python에서 가상 환경을 만들고 관리하는 데 사용할 수 있는 몇 가지 인기 있는 도구를 살펴보겠습니다.
#1. 가상 환경
Virtualenv 는 Python 프로젝트를 위한 가상 환경을 만들고 관리하는 데 널리 사용되는 도구 중 하나입니다. virtualenv
기능의 하위 집합은 venv 패키지에서 사용할 수 있습니다. 그러나 virtualenv
패키지는 venv
에 비해 더 빠르고 확장 가능합니다.
#2. 피펜
pipnev를 사용하면 virtualenv
의 가상 환경 기능과 pip
의 패키지 관리 기능을 모두 사용할 수 있습니다. 관리 pipfiles를 사용하여 가상 환경 내부의 프로젝트 종속성을 관리합니다.
이 Pipenv 플레이그라운드의 브라우저에서 바로 pipenv
를 사용해 볼 수 있습니다.
#삼. 콘다
개발에 Python의 Anaconda 배포를 사용하는 경우 패키지 관리 및 가상 환경 생성에 conda 를 사용할 수 있습니다.
자세한 내용은 conda를 사용한 환경 관리에 대한 포괄적인 가이드를 확인하세요.
#4. 시
Poetry는 모든 Python 프로젝트에서 종속성을 관리할 수 있는 패키지 관리 도구입니다. Poetry를 사용하려면 Python 3.7 또는 이후 버전이 설치되어 있어야 합니다.
#5. 벤브
언급했듯이 venv 는 virtualenv 의 기능 중 일부를 제공하지만 Python 3.3부터 Python 표준 라이브러리에 내장된다는 장점이 있습니다.

Python 설치와 함께 쉽게 사용할 수 있으며 외부 패키지를 설치할 필요가 없습니다. 이 자습서에서는 가상 환경을 만들고 작업하는 데 사용합니다.
Ubuntu에서 Python 가상 환경을 만드는 방법
이 자습서의 나머지 부분을 따르려면 Python 3을 로컬에 설치해야 합니다. Python 3.5 이상 버전을 실행하고 있는지 확인합니다.
이 섹션에서는 Ubuntu Linux 시스템에서 가상 환경을 만들고 활성화하는 단계를 간략하게 설명합니다. 다른 Linux 배포판에서도 동일한 단계를 사용할 수 있습니다.
관리를 더 쉽게 하기 위해 프로젝트 디렉토리를 만들고 이 디렉토리에 cd
를 넣습니다. 우리는 이 디렉토리 안에 venv
를 생성할 것입니다.
$ mkdir my_project $ cd my_project
Python 프로젝트에 대한 가상 환경을 만드는 일반적인 구문은 python3 -m venv <venv-name-or-path>
입니다. 이 명령을 실행하면 my_env
라는 가상 환경이 현재 작업 디렉토리에 생성됩니다.
$ python3 -m venv my_env
가상 환경 내에서 패키지를 활성화하고 설치하는 방법
가상 환경을 만든 후 활성화하고 필요한 패키지를 설치할 수 있습니다. 가상 환경을 활성화하려면 다음 명령을 실행할 수 있습니다.
$ source my_env/bin/activate
가상 환경을 활성화한 후 pip list
명령을 실행하여 설치된 패키지 목록을 가져올 수 있습니다.
$ pip list

지금까지 패키지를 설치하지 않았으므로 생성된 각 가상 환경에서 setuptools
및 pip
(기본적으로 설치됨)를 볼 수 있습니다.
가상 환경 내부에 pip
를 설치하면 특정 프로젝트에 필요한 패키지를 설치할 수 있습니다. 이것이 각 프로젝트에 대해 독립적인 개발 환경 이 있는 이유입니다.
이제 가상 환경을 활성화했으므로 pip를 사용하여 가상 환경에 프로젝트별 패키지를 설치할 수 있습니다. 예를 들어 가장 많이 다운로드된 Python 패키지 중 하나인 Python 요청을 설치해 보겠습니다. 이 패키지는 웹 API 작업을 위한 HTTP 요청을 보내는 데 유용한 여러 기능을 제공합니다.
$ pip install requests
요청 라이브러리를 설치하면 요청 라이브러리가 필요한 모든 패키지와 함께 설치되는 것을 볼 수 있습니다.

$ pip list

다음과 같이 pip freeze
명령을 사용하고 출력을 requirements.txt 파일로 리디렉션할 수 있습니다.
$ pip freeze > requirements.txt
현재 프로젝트 디렉토리의 내용을 살펴보면 requirements.txt 파일이 생성되었음을 알 수 있습니다.
$ ls # my_env requirements.txt
다음 명령을 실행하여 프로젝트에서 작업한 후 가상 환경을 비활성화할 수 있습니다.
$ deactivate
Windows에서 Python 가상 환경을 만드는 방법
일반적으로 개발에는 Linux 환경이 선호됩니다. Windows 시스템을 사용하는 경우 Linux용 Windows 하위 시스템(WSL)을 사용하여 로컬 개발을 위한 Ubuntu 터미널 환경을 설정할 수 있습니다.
Windows 시스템에 있는 경우 Windows PowerShell 또는 명령 프롬프트를 사용하고 다음 명령을 사용하여 가상 환경을 만들 수 있습니다.
> python -m venv <path-to-venv>
가상 환경을 활성화하는 방법
Windows 시스템에서 가상 환경을 활성화하는 것은 명령 프롬프트에서 작업하는지 아니면 Windows PowerShell에서 작업하는지에 따라 다릅니다.
명령 프롬프트에 있는 경우 다음 명령을 실행하여 가상 환경을 활성화합니다.
> <path-to-venv>\Scripts\activate.bat
또는 Windows PowerShell을 사용하는 경우 이 명령을 실행하면 가상 환경이 활성화됩니다.
> <path-to-venv>\Scripts\Activate.ps1
가상 환경 내에서 필요한 모든 패키지를 설치할 수 있습니다.
가상 환경을 비활성화하려면 명령 프롬프트와 Windows PowerShell 모두에서 deactivate
명령을 실행할 수 있습니다.
결론
이 기사에서 우리는 시스템 전체 설치의 한계와 이것이 Python 프로젝트 전반에 걸친 종속성 관리를 어렵게 만드는 방법에 대해 논의했습니다. Python의 가상 환경 은 개별 프로젝트에 대해 격리된 개발 환경을 제공하면서 종속성을 더 잘 관리하는 방법을 제공합니다.
Python에서 가상 환경을 생성하고 관리하는 데 널리 사용되는 도구 중에서 가상 환경을 생성하고 활성화하기 위해 Python 표준 라이브러리에 내장된 venv 를 사용하는 방법을 배웠습니다.
프로젝트의 전용 가상 환경 내에서 프로젝트에 특정한 라이브러리 버전을 설치할 수 있습니다. 그런 다음 이러한 요구 사항을 requirements.txt 파일에 캡처하여 다른 개발자가 프로젝트 환경을 쉽게 복제할 수 있습니다.
다음 Python 프로젝트를 시작할 때 더 나은 종속성 관리를 위해 가상 환경을 사용해야 합니다. 즐거운 코딩!