pip 및 요구 사항 파일을 사용하여 특정 패키지를 업그레이드하려면 어떻게해야합니까?


436

Django 프로젝트의 virtualenv에서 요구 사항 파일과 함께 pip를 사용하고 있습니다. Django 자체와 같은 일부 패키지를 업그레이드하려고하는데 소스 코드 충돌에 대한 오류가 발생합니다.

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

내 요구 사항 파일에서 Django의 버전 번호를 1.2.3에서 1.2.4로 업데이트 한 후입니다. 이 명령을 사용하여 실제로 업그레이드를 수행하고 있습니다.

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

전체 패키지 재 다운로드를 트리거하는 플래그를 찾을 수 없습니다. 심지어 제거 명령을 먼저 실행 한 다음 설치를 시도했지만 주사위는 없습니다. 어쩌면 내가 뭔가를 놓치고 있습니까?


1
최신 버전의 pip는 실제로 업그레이드하는 패키지가 의존하는 다른 모든 종속성을 업그레이드하므로 @ dr-jimbob의 답변을 확인하십시오.
Lokesh Meher

답변:


61

그것이 정확히 당신의 문제인지 확실하지 않지만, 제 경우에는 Django를 1.2.4로 업그레이드 할 수 없었습니다-항상 1.2.3 버전으로 마무리되었으므로 Django를 다음과 같이 제거했습니다.

<virtualenv>/bin/pip uninstall Django

그런 다음 <virtualenv>/build/Django디렉토리를 제거 하고 마침내 올바른 버전을 설치했습니다.

<virtualenv>/bin/pip install Django

이것이 도움이되기를 바랍니다.


53
이것은 모범 사례가 아닙니다. @JoeyG의 답변에 설명 된대로 pip install Django -U또는 pip install Django --upgrade을 사용하십시오 .
Ahmad

@Ahmad는 동의합니다. pip 및 virtual env에는 원활한 업데이트 프로세스가 있어야합니다.
Parth Joshi

1271

다음 명령을 실행하고 1.2.3에서 1.4.0로 업그레이드했습니다.

pip install Django --upgrade

업그레이드 바로 가기 :

pip install Django -U

참고 : 업그레이드중인 패키지에 요구 사항이있는 경우이 명령은 모든 요구 사항을 사용 가능한 최신 버전으로 추가로 업그레이드합니다. 최신 버전의 pip에서는 을 지정하여이 동작을 방지 할 수 있습니다--upgrade-strategy only-if-needed . 이 플래그를 사용하면 설치된 버전의 종속 패키지가 더 이상 업그레이드 된 패키지의 요구 사항을 충족시키지 않으면 종속성이 업그레이드되지 않습니다.


7
이것은 나를 위해 모든 패키지를 업데이트하고 완전히 엉망으로 만들었습니다! 문서 상태 :-모든 패키지를 사용 가능한 최신 버전으로 업그레이드하십시오. 이것이 맞습니까? 아니면 뭔가 잘못 했습니까?
Prometheus

4
내가 한 있도록 @OrbiterFleet 나는 "요청"을 업데이트해야 pip install Requests --upgrade하고 단지 "요청"업그레이드되었습니다. 문서를 볼 때 설명에 " 지정된 모든 패키지 업그레이드 "가 표시됩니다.
harperville

31
주의, 또한 모든 종속성을 업데이트하고 모든 것을 망칠 수 있습니다. 가장 좋은 방법은 패키지를 제거했다가 다시 설치하는 것입니다.
marcelosalloum

3
특정 패키지 사용을 업그레이드하려면pip install --upgrade django==1.4.0
whale_steward

이것은 질문에 따라 정답이어야하거나 질문 자체가 잘못되었습니다.
int soumen

51

문서 예제 3 에 따르면

pip install --upgrade django

그러나 내 경험에 따르면이 방법을 사용하면 관련 패키지도 업그레이드됩니다. 예:

업그레이드 할 가정 somepackage필요로 django >= 1.2.4그것은 또한 업그레이드 할 방법이 종류의 사용 somepackagedjango최신 갱신에 있습니다. 안전하기 위해 :

# assume you want to keep django 1.2.4
pip install --upgrade somepackage django==1.2.4

이렇게하면 somepackagedjango를 1.2.4 버전으로 업그레이드 하고 유지합니다


잘 잡았지만 django주 패키지로 시작한 다음 예제에서 사용 somepackage하고 django종속성으로 사용 하기 때문에 설명이 혼란 스럽습니다 .

34

에 대한 바로 가기 명령 --upgrade:

pip install Django --upgrade

입니다 :

pip install Django -U

7
(불완전한) 답변 대신이 정보를 추가하기 위해 기존 답변을 편집하는 것은 어떻습니까?
a1an

@ a1an은 "추천 편집"에 추가해야 할 추가 정보를 제안하십시오. 감사합니다
Aaron Lelevier 2016 년

4
나는 당신이 컨텍스트에서 제공 한 바로 가기 옵션을 추가하여 JoeyG가 제공 한 답변을 편집 할 수 있음을 의미합니다.
a1an

17

패키지를 업그레이드하면 이전 패키지가 제거됩니다.

이 작업을 수행하는 편리한 방법은이 pip-upgrader 를 사용 requirements.txt하여 선택한 패키지 (또는 모든 패키지) 의 파일 버전도 업데이트하는 것 입니다.

설치

pip install pip-upgrader

용법

virtualenv를 활성화하십시오 (현재 virtualenv에 업그레이드 된 패키지의 새 버전도 설치하므로 중요).

cd 프로젝트 디렉토리에 넣고 다음을 실행하십시오.

pip-upgrade

고급 사용법

요구 사항이 비표준 위치에있는 경우 인수로 보내십시오.

pip-upgrade path/to/requirements.txt

업그레이드하려는 패키지를 이미 알고 있다면 인수로 보내십시오.

pip-upgrade -p django -p celery -p dateutil

시험판 / 시험판 버전으로 업그레이드해야하는 경우 --prerelease명령 에 인수를 추가 하십시오.

전체 공개 : 나는이 패키지를 썼다. 도움이 되길 바랍니다.


1
이 방법으로 모든 패키지를 한 번에 업그레이드 (즉, 나열하지 않고)하는 옵션이 있습니까?
Bjorks 1 위 팬

1
@MikePalmice yes : pip-upgrade -p all입력하지 않아도 모든 패키지를 업그레이드하고 요구 사항 파일을 업데이트합니다.
Simion Agavriloaei

15

이라는 특정 패키지 하나만 업그레이드하려는 경우 somepackage최신 버전의 pip에서 사용해야하는 명령은 다음과 같습니다.

pip install --upgrade --upgrade-strategy only-if-needed somepackage

이것은 django에서 현재 django의 특정 버전 (Django = 1.9.x)에서만 작동하고 버그 수정 / 새로운 기능으로 일부 종속 패키지를 업그레이드하고 업그레이드 된 패키지에 의존하는 django 응용 프로그램을 개발할 때 매우 유용합니다 django에서 (그러나 1.5 이후 django의 모든 버전과 호환됩니다). 기본 동작은 pip install --upgrade django-some-packagedjango를 사용 가능한 최신 버전으로 업그레이드하여 응용 프로그램을 손상시킬 수 있지만 --upgrade-strategy only-if-needed종속 패키지는 필요한 경우에만 업그레이드됩니다.


4

일반적으로 pip는 자체적으로 정리되고 빌드 디렉토리의 내용을 제거합니다. 이 작업을 수행하지 않는 유일한 경우는 다음과 같습니다.

  1. --no-install옵션을 사용했습니다
  2. 편집 가능한 패키지를 사용하고 있습니다
  3. 설치가 취소되었거나 중단되었습니다.

다른 모든 경우에는 build환경을 방해하는 디렉토리가 없어야 합니다.


1

업그레이드 할 특정 버전을 정의하면 upgrade 명령 대신 도움이되었습니다.

pip3 install larapy-installer==0.4.01 -U

0

"pip install -I --upgrade psutil --force"문제를 해결 한 후 새 버전으로 psutil을 제거하고 갑자기 이전 버전을 설치할 수 있습니다 (:


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