pip의`npm install package --save-dev`는 무엇입니까?


202

nodejs npm install package --save-dev에서 설치된 패키지를 패키지에 저장합니다.

파이썬 패키지 관리자에서 같은 것을 어떻게 달성 pip합니까? 예를 requirements.pip들어 패키지를 설치 한 직후에 패키지 이름과 버전을 저장하고 싶습니다 pip install package --save-dev requirements.pip.


4
pip freeze > requirements.pip
falsetru

5
이것은 동일하지 않습니다. npm install package --save-dev설치 및 node_npm 요구 사항 파일에 동시에 추가를 결합합니다. 더 편리합니다. 로 pip freeze1) : 나는 같은 일을 수행하는 두 개의 명령을 수행해야 pip install package2)pip freeze > requirements.pip
hllau

1
핍 에 옵션 에 대한 문제--save있습니다.
rutsky

요구 사항에 setup.py를 사용하는 경우 패키지 버전을 setup.py로 고정 하는 작은 모듈 을 만들었습니다 .
AdamGold

답변:


166

와 동등한 것은 없습니다 pip.

가장 좋은 방법은 pip install package && pip freeze > requirements.txt

설명서 페이지 에서 사용 가능한 모든 옵션을 볼 수 있습니다 .

실제로 귀찮게하면 인수 pips를 가져 와서 파일에 자동으로 -s고정 되는 사용자 정의 bash 스크립트 ( ) 를 작성하는 것이 어렵지 않습니다 requirements.txt.

편집 1

이 글을 작성한 이후 --save-devNPM과 유사한 자동 옵션 을 제공하는 데 아무런 변화가 없었지만 Kenneth Reitz (저자 requests및 그 이상)는 업데이트 를 더 잘 처리하기 위해 더 나은 pip 워크 플로 에 대한 많은 정보를 발표했습니다 pip.

편집 2

위의 "더 나은 핍 워크 플로"기사에서 링크 된 pipenv요구 사항 및 가상 환경을 관리하는 데 사용 하는 것이 좋습니다 . 최근에 이것을 많이 사용하여 전환이 얼마나 간단한지를 요약하고 싶습니다.

설치 pipenv(Mac)

brew install pipenv

pipenv기존 가상 프로젝트를 사용하여 자체 가상 환경을 만들고 관리하므로 requirements.txt모든 요구 사항을 설치합니다 (Python3.7을 사용하지만 --three그렇지 않은 경우 제거 할 수 있음 ).

pipenv --three install

virtualenv를 활성화하여 명령을 실행하는 것도 쉽습니다

pipenv shell

요구 사항을 설치하면 자동으로 PipfilePipfile.lock

pipenv install <package>

오래된 패키지를 업데이트 할 수도 있습니다

pipenv update

내가보기 엔 추천 을 체크 아웃 에서 오는 특히 npm그와 비슷한 느낌이 같은 배경 package.jsonpackage-lock.json


22
또한 종속성의 사용이 중단되어 시간이 지남에 따라 더 이상 필요하지 않을 수있는 종속성의 종속성이 절약됩니다.
Patrick Bassut

이것은 원래의 질문에 대한 --save-dev 측면을 다루지 않는 것으로 보이므로 로컬 개발과 프로덕션에 대해 서로 다른 종속성을 가질 수 있습니다. pipenv로 어떻게 달성 할 수 있습니까?
jeznag

1
@jeznag는 pipenv당신이를 지정할 수 있습니다 dev-packages당신의 Pipfile및 / 또는 사용 --dev(또는 -d명령 줄에서). 예 :pipenv install --dev nose2
Ewan

40

이 간단한 선은 출발점입니다. bash 명령을 쉽게 빌드하여 줄에서 PACKAGE를 재사용 할 수 있습니다.

pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt

간단한 bash 함수 예제에 대한 @devsnd 덕분에 :

function pip-install-save { 
    pip install $1 && pip freeze | grep $1 >> requirements.txt
}

사용하려면 다음을 실행하십시오.

pip-install-save some-package

내 5 센트P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
GBrian

4

나는 실제 감싸는 파이썬 패키지를 만든 pip라는 pipm을 . 모든 pip명령은 그대로 작동하며 요구 사항 파일에 반영됩니다. pip-save(찾아서 사용할 수 없었던 유사한 도구) 와 달리 많은 파일과 환경 (테스트, 개발, 생산 등)을 처리 할 수 ​​있습니다. 또한 모든 종속성을 업그레이드하라는 명령이 있습니다.

설치

pipm install pkg-name

개발 의존성으로 설치

pipm install pkg-name --dev

테스트 종속성으로 설치

pipm install pkg-name --test

제거

pipm uninstall pkg-name

모든 의존성 업데이트

pipm update

요구 사항 파일에서 모든 종속성을 설치하십시오.

pipm install

개발 의존성 포함

pipm install --dev


3

업데이트 : 분명히, pipenv 공식적으로 파이썬 관리자들에 의해 승인되지 않은 , 그리고 이전에 링크 된 페이지가 다른 조직에 의해 소유하고 있습니다. 이 도구에는 장단점이 있지만 아래 솔루션은 여전히 ​​OP가 추구하는 결과를 달성합니다.

pipenvpip무엇보다도 필요한 것을 제공 하는 종속성 관리 도구입니다 .

https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow

$ pipenv install <package>

Pipfile이 없으면 생성합니다. 패키지가 존재하면 제공 한 새 패키지로 자동 편집됩니다.

A Pipfile는에 직접 대응하는 package.json반면,에 Pipfile.lock해당합니다 package-lock.json.



1

수동으로 Makefile (또는 텍스트 파일에 저장 한 다음 Makefile로 가져 오기)에 저장할 수 있습니다 .


PYTHON=.venv/bin/python # path to pyphon
PIP=.venv/bin/pip # path to pip
SOURCE_VENV=. .venv/bin/activate


install:
    virtualenv .venv
    $(SOURCE_VENV) && $(PIP) install -e PACKAGE
    $(SOURCE_VENV) && $(PIP) install -r requirements.txt # other required packages

그리고 그냥 실행 make install


나는이 접근법에 전적으로 동의한다.
eleijonmarck

1

이 작은 명령 줄을 사용하여 패키지를 설치하고 버전을 requirements.txt다음에 저장합니다 . pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt


0

이 작업을 수행하기 위해 쉘 함수를 만드는 것은 어떻습니까? 아래 코드를 귀하의 ~/.profile또는~/.bashrc

pips() {
    local pkg=$1

    if [ -z "$1" ]; then
        echo "usage: pips <pkg name>"
        return 1
    fi

    local _ins="pip install $pkg"
    eval $_ins
    pip freeze | grep $pkg -i >> requirements.txt
}

그런 다음 실행 source ~/.profile하거나 source ~/.bashrc현재 터미널로 가져 오기

패키지를 설치 및 저장하려면 예를 들어 다음을 실행하십시오 pips requests. 패키지가 설치되면 해당 버전이 requirements.txt현재 디렉토리에 저장됩니다 .

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