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 bundle와 pip 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.