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

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`>

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



답변

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

<virtualenv>/bin/pip uninstall Django

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

<virtualenv>/bin/pip install Django

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


답변

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

pip install Django --upgrade

업그레이드 바로 가기 :

pip install Django -U

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


답변

문서 예제 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 버전으로 업그레이드 하고 유지합니다


답변

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

pip install Django --upgrade

입니다 :

pip install Django -U


답변

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

이 작업을 수행하는 편리한 방법은이 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명령 에 인수를 추가 하십시오.

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


답변

이라는 특정 패키지 하나만 업그레이드하려는 경우 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종속 패키지는 필요한 경우에만 업그레이드됩니다.


답변

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

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

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