pyenv, virtualenv, anaconda의 차이점은 무엇입니까?


142

저는 파이썬을 배우려고하는 루비 프로그래머입니다. pyenv는 rbenv의 복사 및 붙여 넣기와 같기 때문에 pyenv와 예쁜 가족입니다. Pyenv는 시스템에 여러 버전의 파이썬을 보유하고 시스템의 민감한 부분을 건드리지 않고 파이썬을 분리 할 수 ​​있도록 도와줍니다.

모든 파이썬 설치에는 pip 패키지가 포함되어 있다고 가정합니다. 내가 아직도 이해하지 못하는 것은이 virtualenv와 아나콘다를 사용하도록 제안하는 좋은 파이썬 라이브러리가 많이 있다는 것입니다. pyenv 용 virtualenv 플러그인을 찾을 수도 있습니다.

이제 나는이 두 pyenv와 virtualenv의 목적과 혼동되고 있습니다. pyenv 내부에는 virtualenv 플러그인이 있습니다.

내 질문은 :

  • pyenv와 virtualenv의 차이점은 무엇입니까?
  • pyenv와 virtualenv에서 pip 명령을 사용하는 데 차이점이 있습니까?
  • 이 pyenv virutalenv는 무엇을합니까?

예를 들어 설명해 주시면 감사하겠습니다.



이 질문을 참조하십시오 VIRTUALENV와 pyenv의 관계
reza.bm

답변:


154

편집 : 그것의 가치는 언급 pip으로,뿐만 아니라 여기 condapip유사점과이 주제와 관련된 차이가 있습니다 .

pip : 파이썬 패키지 관리자.

  • pipruby gem명령 과 동등한 파이썬으로 생각할 수 있습니다.
  • pip 파이썬에는 기본적으로 포함되어 있지 않습니다.
  • homebrew를 사용하여 Python을 설치하면 pip가 자동으로 설치됩니다.brew install python
  • OSX의 최종 버전은 기본적으로 pip를 포함하지 않았습니다. Mac 시스템의 Python 버전에 pip를 추가하려면 다음을 수행하십시오.sudo easy_install pip
  • PyPI를 사용하여 Python 패키지를 찾아서 게시 할 수 있습니다 . Python 패키지 색인
  • requirements.txt 파일은 루비와 비슷합니다. gemfile
  • 요구 사항 텍스트 파일을 작성하려면 pip freeze > requirements.txt
  • 현재 시스템에 python이 설치되어 있으며 시스템에 설치된 모든 python 패키지를 간략하게 설명하는 requirements.txt 파일이 작성되었습니다.

pyenv : 파이썬 버전 관리자

  • 문서에서 : pyenv를 사용하면 여러 버전의 Python간에 쉽게 전환 할 수 있습니다. 단순하고 눈에 잘 띄지 않으며 유일하게 잘하는 단일 목적 도구의 UNIX 전통을 따릅니다. 이 프로젝트는 rbenv 및 ruby-build에서 분기되었으며 Python 용으로 수정되었습니다.
  • 많은 사람들이 python3 사용을 주저합니다 .
  • 다른 버전의 파이썬을 사용해야 pyenv하는 경우이를 쉽게 관리 할 수 ​​있습니다.

virtualenv : Python 환경 관리자.

  • 문서에서 : 해결되는 기본 문제는 종속성 및 버전 중 하나이며 간접적으로 권한입니다. LibFoo 버전 1이 필요한 응용 프로그램이 있지만 다른 응용 프로그램에는 버전 2가 필요하다고 가정합니다.이 두 응용 프로그램을 어떻게 모두 사용할 수 있습니까? /usr/lib/python2.7/site-packages (또는 플랫폼의 표준 위치에 상관없이)에 모든 것을 설치하면 업그레이드하지 않아야하는 응용 프로그램을 실수로 업그레이드하는 상황이 발생하기 쉽습니다.
  • 를 만들려면 virtualenv간단히 호출하십시오 virtualenv ENV. 여기서 ENV새 가상 환경을 배치 할 디렉토리입니다.
  • 를 초기화하려면 virtualenv다음을 수행해야합니다 source ENV/bin/activate. 사용을 중지하려면 간단히 전화하십시오 deactivate.
  • 를 활성화 하면 프로젝트 파일 에 대해 virtualenv실행하여 모든 작업 공간의 패키지 요구 사항을 설치할 수 있습니다 .pip install -rrequirements.txt

Anaconda : 패키지 관리자 + 환경 관리자 + 추가 과학 라이브러리

  • 문서에서 : Anaconda 4.2.0에는 Python (2.7.12, 3.4.5 및 / 또는 3.5.2)의 쉬운 설치와 NumPy, Pandas를 포함하여 사전 빌드되고 테스트 된 100 가지 이상의 과학 및 분석 Python 패키지 업데이트가 포함되어 있습니다. , SciPy, Matplotlib 및 IPython과 함께 620 개 이상의 패키지를 간단한conda install <packagename>
  • 웹 개발자로서 Anaconda를 사용하지 않았습니다. 모든 패키지를 포함하여 ~ 3GB입니다.
  • 개인적으로 사용 경험이 없지만 +를 miniconda사용하는 것보다 더 간단한 옵션 인 것처럼 보이는 축소 버전이 있습니다 .pipvirtualenv
  • conda패키지를 설치할 수는 있지만 이 패키지는 PyPI 패키지와 별개이므로 설치해야하는 패키지 유형에 따라 pip를 추가로 사용해야 할 수도 있습니다.

또한보십시오:


3
이것은 아마도, 지금 CF 새로 고침을 사용할 수 stackoverflow.com/a/49084152/14420
매트 윌키

9
현재 Python.org에서 공식적으로 권장하는 Python 패키징 도구 인 것처럼 pipenv 에 포함되도록 업데이트 할 수 있습니까?
Wavesailor 2016 년

1
3GB에 불과한 라이브러리를 설치하는 데 문제가 있습니까? 이러한 라이브러리를 모두 배포하고 싶지는 않지만 3GB 상당의 라이브러리가 설치되었다고해서 모든 라이브러리를 배포해야한다는 의미는 아닙니다. 그리고 그것은 요즘 작은 양의 하드 드라이브 공간입니다. 현재 아나콘다 설치를 사용하고 있으며 venv로 내 환경을 관리하지만 가상 환경에도 conda를 사용할지 여부를 고려하고있었습니다 (venv는 더 부드러운 워크 플로처럼 보입니다).
David

@David 나는 조금 늦었지만 venv에서 확장 할 수 있습니까?
AMC

1

간단한 비유 :

  • pyenv ~ rbenv
  • 핍 ~ 번 들러
  • 가상 환경 ~ rvm의 gemset. gemset없이 번 들러에서 직접 관리 할 수 ​​있습니다.

python3을 사용하기 때문에 venv 라는 python3 내장 가상 환경을 선호합니다 . venv 는 간단하고 사용하기 쉽습니다. 공식 문서를 읽는 것이 좋습니다. 의사는 짧고 간결합니다.

루비에서는 번 들러가 처리하기 때문에 가상 환경이 실제로 필요하지 않습니다. 가상 환경과 번 들러는 훌륭하지만 개념이 다르지만 동일한 문제를 해결하려고합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.