상세 컨텐츠

본문 제목

PIP와 Virtualenv

Programming/Python

by 쌩우 2019. 7. 22. 16:08

본문

PIP

Python Package Index(PyPI) 저장소로부터 파이썬 패키지를 받아 설치하는 패키지 관리 도구.
PyPI는 서드파이 파이썬 오픈소스 패키지들을 위한 저장소이다.
Node.js의 npm과 같은 개념이라고 생각하면 된다.

기초적인 패키지 매니저인 easy_install이 파이썬 설치시 자동 설치된다.
하지만 pip를 사용하는 것이 훨씬 유용하므로 pip를 이용하는 것이 일반적이다.

easy_install pip

# Django를 설치하여보자

pip install django    # global install

Virtualenv

여러 개의 파이썬 프로젝트가 하나의 컴퓨터에서 충돌을 일으키지 않고 존재할 수 있게 도와주는 것이다.

어떤 문제 해결을 위하여 사용하는가?

Virtualenv가 없을 경우

  1. 웹 서버로 HTTP request 보내는 프로그래밍 필요
  2. Requests 라이브러리를 사용하고 싶어졌다
  3. pip install requests 사용하여 설치한다

이 때 발생하는 일은,

$ pip install requests
 Downloading/unpacking requests
     Downloading requests-1.0.0.tar.gz (337Kb): 337Kb downloaded
     Running setup.py egg_info for package requests

 Installing collected packages: requests
     Running setup.py install for requests

     error: could not create '/Library/Python/2.7/site-packages/requests': Permission denied

위의 에러는 일반적으로 mac 사용자가 해당 폴더에 쓰기 권한이 없어서 생기는 것이다.
sudo를 사용하여 install 하면 설치는 진행될 것이다.

$ sudo pip install requests
 Password:
 Downloading/unpacking requestss
     Running setup.py egg_info for package requests

 Installing collected packages: requests
     Running setup.py install for requests

 Successfully installed requests
 Cleaning up ...

설치 완료 후, python 명령어를 실행해서 Requests 라이브러리를 임포트 해 보자.

>>> import requests
>>> requests.get('http://naver.com')
<Response [200]>

위와 같은 flow로 어떤 프로젝트를 성공적으로 끝마쳤다고 생각해보자! 그 프로젝트가 아주 좋은 반응을 얻고,
이 후 유사한 방식의 업그레이드 버전에 대한 개발 요청을 받았다면?

아마도 기존에 작성하였던 코드를 재활용하여 진행할 수 있을 것이다.

새로운 프로젝트를 진행하기 전,
requests 라이브러리가 새롭게 기능이 추가된 것을 알 수 있었다.
이 기능을 새 프로젝트에 필수적인 기능이었다! 이 기능을 사용하기 위해, 기존에 설치하였던 requests 라이브러리를 업데이트 해 보았다.

sudo pip install --upgrade requests

하지만 이 때!

대재앙이 발생한다!

기존의 프로젝트에 에러가 발생한 것이다.
업데이트를 하면서 requests 라이브러리에 변화가 생겼고,
이 작은 변화가 코드를 사용할 수 없게 오염시킨 것이다.
하나의 프로젝트만 증상이 발견된다면,
새로운 라이브러리 업데이트에 맞게 수정할 수도 있겠지만
수 많은 프로젝트에 대해서는 어떻게 해결할 것인가???

이런 때에 Virtualenv를 사용한다

프로젝트 혹은 프로그램별로 각각 독립된 가상의 환경을 가짐으로써,
서로 영향을 끼치지 않고 개발이 가능해지는 것이다.

  • virtualenv는 python, pip, PyPI 부터 설치된 라이브러리들의 복사본을 만듦으로써, 독립적인 파이썬 환경을 만들어주는 도구입니다.
  • 이는 여러분이 동시에 하나의 기기에서 여러개의 프로젝트가 가지는 다른 의존성을 다룰 수 있도록 디자인되었습니다.
  • 설치 관련 가이드는 virtualeng.org에서 찾을 수 있습니다.
  • 설치 후에, env라는 가상환경 폴더를 만들고 싶다면 virtualenv env 명령어를 실행시키면 됩니다.
  • 여러분의 각 프로젝트 마다 이러한 환경이 하나씩 필요하게 됩니다. 이 폴더들을 버전 컨트롤 시스템에서 제외하는것을 잊지 마세요.
  • 가상환경에서 python과 pip를 사용하고 싶다면, env/bin/python 그리고 env/bin/pip를 사용하면 됩니다.
  • 가상환경을 source env/bin/activate 스크립트로 활성화 시킬 수 있고 deactivate 명령어를 통해 비활성화 시킬 수 있습니다. 선택적이지만 개발을 조금 더 편하게 도와줄 것입니다.

-참조 [https://medium.com/@dan_kim/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%B4%88%EC%8B%AC%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-pip-%EA%B7%B8%EB%A6%AC%EA%B3%A0-virtualenv-%EC%86%8C%EA%B0%9C-a53512fab3c2]

'Programming > Python' 카테고리의 다른 글

Django - intro  (0) 2019.07.23
dictionary + iteration 딕셔너리와 반복문  (0) 2019.07.22
자료구조 - dictionary  (0) 2019.07.21
모듈 만들기  (0) 2019.07.21
모듈 사용하기  (0) 2019.07.21

관련글 더보기

댓글 영역