728x90
이번 포스트는 Python 에서 중요한 부분인 패키징에 대해서 그 중에서도 PIP와 virtualenv가 무엇이고 어떻게 활용 하게 되는지에 대해 알아보겠습니다.
1. PIP란?
- pip는 Python Package Index (PyPI) 저장소로부터 파이썬 패키지를 받아 설치하는 패키지 관리 도구
- PyPI는 third-party 파이썬 오픈소스 패키지들을 위한 저장소
- PIP와 대응되는 개념은 Ruby(RubyGems), PHP(Packagist), Perl(CPAN), Node.js(NPM)
- 보통의 pip install (package)를 통해 package를 설치하게 되면, 아나콘다의 경우, C:\Users\유저\Anaconda3\Lib\site-packages/package 와 같은 형태로 설치가 된다.
- pycharm의 경우 C:\Users\유저\PycharmProjects\pythonProject\venv\Lib\site-packages/package 와 같은 형태로 설치된다.
- site-packages 내부에 패키지가 설치되면, 파이썬 프로그램에서 이 패키지를 임포트해서 사용할 수 있게됩니다
2. virtualenv란?
- 대부분의 경우 패키지를 글로벌하게 설치하지 않아야 한다.
- virtualenv가 여러개의 파이썬 프로젝트가 하나의 컴퓨터에서 충동을 일으키지 않고 존재할 수 있도록 도와준다.(독립된 가상공간)
3. virtualenv가 필요한 이유(역할)
- 같은 패키지가 2 개의 프로그램에서 필요하다고 가정, 구 버전의 라이브러리를 사용하던 A 프로그램이 있었는데, 독립된 공간인 virtualenv에 패키지를 설치하지않고 그냥 pip install (packages) 를 통해 global site-packages에 전부 설치되게 되면, 해당 라이브러리를 필요하에 upgrade했을 시에 B프로그램은 잘 작동하지만, A프로그램은 오류가 나는 상황이 발생될 수 있습니다.
- 결국엔 버전의 호환성을 맞추기 위함
- virtualenv 도구를 이용해 생성된 pip 복사본을 이용해 PyPI로 부터 패키지를 설치하면, virtualenv 폴더 내부의 site-packages 폴더에 이를 설치, 그리고 설치된 패키지는 이전과 동일한 방법으로 파이썬 프로그램 내부에서 사용가능
4. virtualenv를 설치하는 방법
- linux의 환경일 경우 virtualenv 패키지를 global하게 pip로 설치해야한다.(pip 또한 global하게 설치되어야 하는 패키지중 하나) - sudo pip install virtualenv
- pycharm 과 같은 툴을 사용할 경우 pipenv, venv등 virtualenv를 구성 할 수 있는것이 내재되어 있어, project를 생성하면서 virtualenv를 구성할 수 있다.
5. virtualenv를 생성 하는 방법
- linux에서는 프로젝트의 루트 폴더로 이동 후, virtualenv 가상환경이름 명령어를 통해 가상환경을 생성하면됩니다.
- cd 가상환경이름/bin -> source activate -> 가상환경 접속완료
- linux에서 virtualenv를 생성하게되면 더이상 sudo pip install이 아닌 pip install로 사용해도 global이 아니기에 슈퍼유저권한이 필요없게 됩니다.
- pycharm의 경우 프로젝트를 생성하면서 virtualenv를 생성하는 옵션이 포함되어 있어 선택해주면 됩니다.
728x90
'language > Python' 카테고리의 다른 글
[python] 클래스(class), 객체(object), 인스턴스(instance), 매개변수 self, 생성자(constructor), 상속(inheritance), 오버라이딩(overriding) (0) | 2021.11.29 |
---|---|
[Python] (.ipynb) jupyter notebook 파일 형식 -> (.py) 파이썬 스크립트 변환하기 (0) | 2021.10.26 |
python 2 vs python 3 주요 차이점 (0) | 2021.08.19 |
[Python] 조건문(if)-제어문,분기문과 차이, 반복문(while문,for문), 예외처리(try, except, else, finally) 개념과 예제 (0) | 2021.01.13 |
[Python] 파이썬의 자료형과 예제 (0) | 2021.01.12 |
댓글