[Python] 파이썬 가상환경(Virtual Environment) 설정

2024. 8. 13. 20:29프로그래밍/Python

가상 환경(Virtual Environment)

파이썬을 컴퓨터에서 시행할 때 진행하려는 프로젝트에 대하여 가상 환경(Virtual Environment)을 설정해주어야 한다.

각 가상환경은 서로 독립적이기 때문에 필요한 패키지를 새로 설치해야 한다.

 

그리고 코드마다 필요한 모듈 및 패키지들이 다르기 때문에

일일이 실행할 때마다 필요한 것을 pip install 구문을 작성하기에는 비효율적이다.

 

따라서 requirements.txt와 같은 별도의 파일에 해당 코드의 환경에 필요한 패키지들을 정리하고,

이를 한 번에 다운 받은 가상환경 속에서 코드를 실행하는 게 편리하다!

 

가상환경의 장점

  • 독립된 환경 제공: 가상환경은 시스템의 전역 Python 환경과는 별도로 동작하여, 프로젝트별로 독립적인 패키지를 관리할 수 있다. 프로젝트 별로 필요한 패키지가 다른 것이 아무런 상관이 없다는 뜻이다.
  • 의존성 충돌 방지: 서로 다른 프로젝트가 서로 다른 버전의 라이브러리를 요구하더라도 가상환경을 통해 충돌을 피할 수 있음, 가령 가장 최신 패키지를 사용하는 모델과 이전 버전을 쓰는 모델의 환경을 다르게 설정하면 충돌의 문제가 없다.
  • 일관된 환경 유지: 배포할 때 다른 시스템에서 동일한 환경을 쉽게 재현할 수 있다. ( 도커와 같은 파일을 생성하면 배포가 굉장히 편리해진다)
  • 간편한 관리: 필요 없는 패키지를 전역에 설치할 필요 없이, 가상환경 내에서만 설치하고 관리가 가능하다.

 

방법은 다음과 같다.

 

 

 

 

1. 가상환경 만들기

우선적으로, 파이썬 프로젝트 폴더로 이동한 후  가상 환경을 만드는 명령어를 입력

# 가상환경 생성
pythonn -m venv 가상환경이름


이 명령을 실행하면, 가상환경이름과 동일한 이름의 폴더가 생성되고 그 안에 Python 실행 파일과 독립적인 라이브러리 설치 경로가 포함된다

 


2. 가상환경 활성화

myenv\Scripts\activate


가상환경이 활성화되면 프롬프트가 `(myenv)`와 같이 변경되어 가상환경이 활성화되었음을 표시함을 확인



3. 가상환경에서 패키지 설치
가상환경을 활성화한 후에는 `pip`을 사용하여 필요한 패키지를 설치하면 해당 환경에서만 영향을 받는 패키지들을 관리 가능하다!

pip install pytorch


이렇게 설치된 패키지는 가상환경 내에만 설치되며,

다른 가상환경이나 시스템 전역에는 영향을 미치지 않는 독립적인 환경임



4. 가상환경 비활성화

deactive

 

작업이 끝나면 가상환경을 비활성화하여 시스템 전역 Python 환경으로 돌아가려면,

`deactivate` 명령을 실행하면 됨



5. 가상환경 삭제

rm -rf myenv  # Mac/Linux
rmdir /s myenv  # Windows

더이상 사용할 필요가 없다면, 해당 가상환경을 삭제하면 됨

 

 

배포 및 공동 프로젝트의 원활한 관리를 위해선 requirements 파일에 사용한 패키지들을 정리하는 것이 좋다.

 

 

1. 'requirements.txt' 파일 작성

 

터미널 Bash에 작성

현재 가상환경에 설치된 패키지를 'requirements.txt' 파일로 저장

pip freeze > requirements.txt

 

그 다음, 새로운 가상환경을 만든 후에 필요한 패키지 설치를 위해 다음과 같은 명령 입력

pip install -r requirements.txt

 

이 명령어를 통하여 'requirements.txt'에 있는 패키지들을 설치 가능

 

2. 기존 가상환경을 복제(Optional)

 

virtualenv-clone 패키지를 사용하기

pip install virtualenv-clone

패키지를 사용하기

virtualenv-clone old_env new_env

그대로 복사해 사용하기

 

3. 가상 환경에 있는 패키지들 다운받기

pip install -r requirements.txt

위 명령어를 입력하면 requirements에 저장해둔 패키지들이 자동으로 설치된다.