Ruby의 번 들러 / Perl의 상자에 해당하는 Python은 무엇입니까?


93

나는 virtualenv와 pip에 대해 알고 있습니다. 그러나 이것들은 번 들러 / 카톤과는 약간 다릅니다.

예를 들면 :

  • pip는 shebang 또는 activate 스크립트에 대한 절대 경로를 작성합니다.
  • pip에는 exec하위 명령 ( bundle exec bar) 이 없습니다.
  • virtualenv는 Python 인터프리터를 로컬 디렉토리에 복사합니다.

모든 Python 개발자가 virtualenv / pip를 사용합니까? Python 용 다른 패키지 관리 도구가 있습니까?


4
아니요, 모든 Python 사용자가 virtualenv를 사용하는 것은 아닙니다. 개인적으로 필요하지 않았습니다.
Fred Foo

내가 뭔가를 알고 아니라고 정확히 (BTW, 내가 지금까지 몰랐) 루비 들러있다. 내가 사용하는 것은 virtualenv pip setuptools를 모두 사용하는 것입니다 -또는 distutils 또는 Google에서 처음 찾은 배포 시스템 :) 답변에 대해서도 궁금하지만 대부분의 경우 이것이 제 솔루션입니다.
brandizzi

pipenv그리고 shovel아래에 언급이 질문에 질문을 받았다 이후 더 현대적인 선택입니다.
Jim Meyer

pipenv도 shovel도 동일하지 않습니다. 삽은 번 들러와 같지 않고 갈퀴와 비슷합니다. Python 종속성 관리는 훨씬 뒤쳐져 있습니다. 그것은 일일 (하지만 PIP에 병합됩니다 pypi.org/project/pipfile ...)
Nomas 국무

답변:


72

번 들러에 대해 읽은 내용에서-virtualenv가없는 pip가 잘 작동합니다. 일반 gem 명령과 번 들러 사이의 것으로 생각할 수 있습니다. pip로 할 수있는 일반적인 작업 :

  1. 패키지 설치 (gem 설치)

    pip install mypackage
  2. 종속성 및 대량 설치 (gemfile)

    아마도 가장 쉬운 방법은 pip의 requirements.txt 파일을 사용하는 것입니다. 기본적으로 가능한 버전 제약이있는 필수 패키지의 일반 목록입니다. 다음과 같이 보일 수 있습니다.

    nose==1.1.2
    django<1.3
    PIL

    나중에 이러한 종속성을 설치하려면 다음을 수행하십시오.

    $ pip install -r requirements.txt

    요구 사항 파일 구문에서 현재 패키지를 모두 보는 간단한 방법은 다음과 같습니다.

    $ pip freeze

    여기에서 자세한 내용을 읽을 수 있습니다 .

  3. 실행 (번 들러 exec)

    실행 파일과 함께 제공되는 모든 Python 패키지는 일반적으로 설치 후 직접 사용할 수 있습니다 (사용자 지정 설치가 있거나 특수 패키지가 아닌 경우). 예를 들면 :

    $ pip install gunicorn
    $ gunicorn -h 
  4. 캐시에서 설치할 gem 패키지 (번 들러 패키지)

    pip bundlepip zip/unzip. 하지만 많은 사람들이 그것을 사용하는지 잘 모르겠습니다.

ps 환경 격리에 관심이 있다면 pip와 함께 virtualenv를 사용할 수도 있습니다 (가까운 친구이며 완벽하게 함께 작동합니다). 기본적으로 pip는 관리자 권한이 필요할 수있는 시스템 전체 패키지를 설치합니다.


46
bundler의 가장 큰 장점은 virtualenv 부분이 통합되어 있고 대부분의 경우 관리자 권한이 필요하지 않다는 것입니다. 사실, 번들은 전 세계적으로 필요한 유일한 보석 일 수 있습니다. bundle install --path vendor모든 것을 로컬에 설치하고 bundle exec그것을 알아낼만큼 똑똑합니다. 명시적인 환경 변경이 필요하지 않습니다.
Debilski

11
3 번 포인트가 옳다고 생각하지 않습니다. 단순히 루비 실행 파일을 실행하는 것은 bundle exec. 요점은 실행 파일을 실행하기 전에 bundle exec환경을 변경한다는 것 Gemfile입니다. Pip은 bundle execvirtualenv가 할 수 있지만.
Sean Mackesey 2013 년

@SeanMackesey virtualenv 환경 활성화를 실행할 때마다 즉시 환경 내부가됩니다. 예를 들어 python은 전역 적으로 설치된 환경이 아닌 env의 환경을 가리키고, pythonpath는 env와 관련하여 올 바르며 모든 앱도 해당 환경에서 실행됩니다.
Denys Shabalin

8
들러에 대한 중요한 것은 당신이 거의 모든 크기의 모든 루비 프로젝트는, A가있을 것이라는 점을 거의 보장 할 수있는, 그것은 지금 사실상의 표준이다 Gemfile그것의 루트에 앉아서, 당신은 할 수 bundle install당신이있는 거 잘 가고, 또는 bundle --deployment'과 머신에 필요한 루비 버전이있는 경우 다른 작업이 거의없는 서버에서 실행됩니다. 파이썬에는 단순히 동등한 것이 없습니다. 도구는 있지만 문화적 편재성은 없습니다.
ocodo

14

bundler와 유사한 인터페이스를 가진 pipenv 를 사용할 수 있습니다 .

$ pip install pipenv

Pipenv는 virtualenv를 자동으로 생성하고 Pipfile또는 에서 종속성을 설치합니다 Pipfile.lock.

$ pipenv --three           # Create virtualenv with Python3
$ pipenv install           # Install dependencies from Pipfile
$ pipenv install requests  # Install `requests` and update Pipfile
$ pipenv lock              # Generate `Pipfile.lock`
$ pipenv shell             # Run shell with virtualenv activated

다음과 같은 virtualenv 범위로 명령을 실행할 수 있습니다 bundle exec.

$ pipenv run python3 -c "print('hello!')"

3

클론 pbundler가 있습니다.

현재 pip에있는 버전은 단순히 requirements.txt이미 가지고 있는 파일을 읽지 만 훨씬 오래되었습니다. 또한 완전히 동일하지는 않습니다 virtualenv.. Bundler는 누락 된 패키지 만 설치하고 시스템 디렉토리에 설치할 sudo 암호를 제공하거나 pbundler의 기능이 아닌 다시 시작하는 옵션을 제공합니다.

그러나 git의 버전은 "Cheesefile"이 있고 이제 requirements.txt를 지원하지 않는 것을 포함하여 Bundler의 동작에 훨씬 더 가깝도록 거의 완전한 재 작성입니다. pythonland에서 requirements.txt가 사실상의 표준이기 때문에 이것은 불행한 일이며이를 표준화하기위한 Offical BDFL-stamped 작업도 있습니다 . 이것이 시행되면 pbundler와 같은 것이 사실상의 표준이 될 것임을 확신 할 수 있습니다. 아아, 아직 상당히 안정적인 아무것도 내가 알고 없다 (그러나 나는 것 사랑 잘못을 입증 할).


이 프로젝트는 사라진 것 같습니다. 시 고려 : stackoverflow.com/a/61771381/115075
bb.

1

https://github.com/Deepwalker/pundler를 썼습니다 . PIP pundle에서 이름은 이미 사용되었습니다.

그것은 사용 requirements(_\w+)?.txt하여 원하는 종속 관계로 파일과 생성 frozen(_\w+)?.txt냉동 버전 파일을.

(_\w+)?사물에 대해 -이것은 envs입니다. requirements_test.txt를 만든 다음 requirements.txt와 PUNDLEENV=test함께 실행에서이 deps를 사용 하는 데 사용할 수 있습니다 .

그리고 virtualenv에 대해-당신은 하나가 필요하지 않습니다.


1

Shovel 은 볼만한 가치가 있다고 말하고 싶습니다 . Rake의 Pythonish 버전을 위해 특별히 개발되었습니다. 프로젝트에 많은 커밋 활동이 없지만 안정적이고 유용 해 보입니다.


1

Python Poetry는 2020 년 현재 (그리고 이미 2018 년부터) Ruby 번 들러에 가장 가깝습니다. 이미 2 년이 넘었고 여전히 매우 활동적이며 훌륭한 문서가 있습니다. curl-pipe-python-style이 권장되는 설치 방법에 대해 불평 할 수 있지만 macOS의 homebrew와 같은 대안이 있습니다.

(번 들러와 달리) 배후에서 virtualenv를 사용하지만 잠금 파일을 제공 및 사용하고, 하위 종속성을 처리하고, 지정된 버전 제약 조건을 준수하고, 오래된 패키지를 자동으로 업데이트 할 수 있습니다. 좋아하는 셸에 대한 자동 완성 기능도 있습니다.

pyproject.toml 파일을 사용하여 번 들러보다 조금 더 나아갑니다 (gemspec에 더 가깝습니다. JavaScript 및 TypeScript의 npm 및 yarn 과도 비슷합니다).

Poetrify (보완 프로젝트)는 프로젝트를 requirements.txt에서 pyproject.toml로 변환하는 데 도움이됩니다.

잠금 파일은 poetry export -f requirements.txt > requirements.txt다른 도구에 필요한 경우 (또는 돌아가고 싶은 경우)에 의해 requirements.txt로 내보낼 수 있습니다 .


0

아니요, 모든 개발자가 virtualenv 및 / 또는 pip를 사용하는 것은 아니지만 많은 개발자가 이러한 도구를 사용 / 선호합니다.

그리고 이제는 패키지 개발 도구와 다른 환경에 대한 진정한 질문입니다. 동일한 목적을 위해 Buildout ( http://www.buildout.org/en/latest/ ) 과 같은 다른 도구 가 있으면 관리하는 모든 프로젝트에 대해 환경 Python 빌드 시스템을 격리합니다. 얼마 동안 나는 이것을 사용하지만 지금은 아닙니다.

프로젝트 별 독립 환경은 Python에서 Ruby의 동일한 상황과 약간 다릅니다. 제 경우에는 rbenv 와 비슷하지만 Python의 경우 pyenv ( https://github.com/yyuu/pyenv )를 사용 합니다. 프로젝트마다 다른 버전의 python 및 virtualenvs, 그리고이 격리 된 환경에서 pip 또는 easy-install (필요한 경우)을 사용할 수 있습니다.

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