728x90
반응형

Python 이미지

파이썬 가상환경 왜 쓰지? 

파이썬은 현재 [2022.04.12] 기준으로 3.10 버전 까지 릴리즈가 되었습니다. 

파이썬 릴리즈 버전

 

버전 마다 파이썬 문법이 달라서 환경 구성을 별도로 해야 하는 경우가 종종 발생합니다. 

이럴때 python 에서 제공하는 virtualenv(venv) 기능을 사용함으로서 버전 별로 개발 환경을 달리하여 구성 할수 있습니다. 

 

예를 들어 각각 아래와 같은 환경에서 프로젝트가 환경이 구성되고 개발 되어질수 있습니다. 

  • app1 : venv1(파이썬 2.7 버전  + Django3.x)
  • app2 : venv2(파이썬 3.7 버전 + Django4.x )

 

파이썬 버전과 Django 버전별로 사용하는 팩키지(라이브러리)간 의존성으로 인해  호환이 되지 않는 문제가 종종 발생한다. 이러한 문제를 서로다른 동일한 PC 에 가상환경을 만들어 개발함으로서 문제를 해결 할수 있다 . 

 

 

virtualenv VS venv 언떤게 맞는거야? 

둘다 가상환경을 만들수 있다는 점에서 동일 하지만 사용방법및 용도에 따라서 차이가 있습니다. 

virtualenv 는 별도로 패키지를 설치해야(pip install virtualenv) 사용 가능 하다. 

Python3 버전에서는 기본제공하는 라이브러리로 Python3 버전을 사용중이라면 venv 명령을 사용해 가상환경 구성이 가능합니다. 

 

가상환경 생성 방법

이제 본격적으로 가상환경 생성 방법에 대해 알아 보겠습니다. 

python -m venv [가상환경이름] 명령을 통해 생성 할 수 있다. 

 

가상 환경 생성

우선 가상환경을 구성할 루트 디렉토리(venv) 를 만듭니다. 

그리고 해당 디렉토리로 들어가서 가상환경을 만들어 줍니다. 

파이썬 2.7 환경에 의미로 py27 가상환경 이름을 주었습니다. 

$ mkdir venv
$ cd venv
$ python -m venv py27

가상환경 생성 확인

py27 이라는 이름으로 폴더가 생기고 파이썬 관련한 파일과 디렉토리가 생겼습니다. 

하지만 파이썬 2.7 버전을 설치를 원했는데 3.7 버전으로 생성이 되었습니다.

생성시 사용자 환경 파이썬 버전으로 가상 환경이 생성이 되어 그렇습니다.

* 필자의 환경은  centos7 에 default 파이썬 2.7 환경 구성이었으나 파이썬 3.7을 별도로 설치해 주었습니다.

리눅스환경에서 파이썬 설치는 아래 글을 참고 하세요

파이썬3.7 설치 

 

[testuser1@centos7:/home/testuser1/venv]$ tree py27 -L 2
py27
|-- bin
|   |-- activate
|   |-- activate.csh
|   |-- activate.fish
|   |-- easy_install
|   |-- easy_install-3.7
|   |-- pip
|   |-- pip3
|   |-- pip3.7
|   |-- python -> /bin/python
|   `-- python3 -> python
|-- include
|-- lib
|   `-- python3.7
|-- lib64 -> lib
`-- pyvenv.cfg

 

파이선 3.7 환경에서 파이썬2.7 가상환경 생성 

python3 버전에서는 venv 로 파이썬2.7 전을 만들수 없는 것 같습니다. virtualenv  팩키지를 설치해서 가상환경을 만들어 보겠습니다. 

  •  pip install virtualenv 로 패키지를 설치합니다. 
  • virtualenv py27 --python=python2.7

원하는 파이썬2.7 버전으로 생성되는것을 확인할수 있습니다. 

[testuser1@centos7:/home/testuser1/venv]$ tree -a py27/  -L 2
py27/
|-- .gitignore
|-- bin
|   |-- activate
|   |-- activate.csh
|   |-- activate.fish
|   |-- activate.nu
|   |-- activate.ps1
|   |-- activate_this.py
|   |-- deactivate.nu
|   |-- easy_install
|   |-- easy_install-2.7
|   |-- easy_install2
|   |-- easy_install2.7
|   |-- pip
|   |-- pip-2.7
|   |-- pip2
|   |-- pip2.7
|   |-- python
|   |-- python2 -> python
|   |-- python2.7 -> python
|   |-- wheel
|   |-- wheel-2.7
|   |-- wheel2
|   `-- wheel2.7
|-- include
|   `-- python2.7 -> /usr/include/python2.7
|-- lib
|   `-- python2.7
|-- lib64
|   `-- python2.7
`-- pyvenv.cfg

7 directories, 24 files

가상환경 진입

 py27/bin/activate 실행하면 가상한경에 진입 할수 있습니다.

  • . py27/bin/activate
  • python -V 명령을 통해 설치된 버전 확인 
  • pip list 명령을 통해 설치된 버전 확인 (pip 를 통해 파이썬에서 필요로 하는 팩키지를 설치할수 있습니다.)
(py27) [testuser1@centos7:/home/testuser1/venv]$ python -V
Python 2.7.5
(py27) [testuser1@centos7:/home/testuser1/venv]$ pip --version
pip 20.3.4 from /home/testuser1/venv/py27/lib/python2.7/site-packages/pip (python 2.7)
(py27) [testuser1@centos7:/home/testuser1/venv]$ pip list
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Package    Version
---------- -------
pip        20.3.4
setuptools 44.1.1
wheel      0.37.1

python2.7 환경에서 개발 할수 있는 환경을 만들어 졌습니다. 

 

가상환경  나오기 / 삭제 

Ctrl +D 가상환경에  빠져 나올수 있습니다. 

가상환경이 삭제는 그냥 지우시면 됩니다. (py27 ) 삭제 

728x90
반응형

+ Recent posts