[python] pip가 내 패키지의 이전 버전을 설치하는 이유는 무엇입니까?

방금 PyPi (1.2.1.0-r4)에 새 버전의 패키지를 업로드했습니다. egg 파일을 다운로드하고 easy_install로 설치할 수 있으며 버전이 올바르게 확인됩니다. 하지만 pip를 사용하여 설치하려고하면 버전 1.1.0.0이 대신 설치됩니다. pip를 사용하여 버전을 명시 적으로 지정하더라도이 pip install -Iv tome==1.2.1.0-r4메시지가 표시 Requested tome==1.2.1.0-r4, but installing version 1.1.0.0되지만 그 이유를 이해할 수 없습니다.

나는 두 번 확인하고 parse_version1.2.1의 버전 문자열이 1.1.0의 버전 문자열보다 큰지 확인했습니다.

>>> from pkg_resources import parse_version as pv
>>> pv('1.1.0.0') < pv('1.2.1.0-r4')
True
>>>

왜 대신 1.1.0을 설치하기로 선택했는지 아십니까?



답변

이것은 훌륭한 질문입니다. 알아내는 데 영원히 걸렸습니다. 이것은 나를 위해 작동하는 솔루션입니다.

분명히 pip패키지의 로컬 버전을 찾을 수 있다면 pip원격 버전보다 로컬 버전을 선호 할 것입니다. 나는 심지어 내 컴퓨터를 인터넷에서 분리하고 다시 시도했다 pip. 패키지를 성공적으로 설치했고 불평조차하지 않았을 때 소스는 분명히 로컬이었다.

제 경우에 정말 혼란스러운 부분 pippypi 에서 최신 버전 을 찾아 보고 한 다음 계속 진행하여 어쨌든 이전 버전을 다시 설치했다는 것입니다 … arggh. 또한 그것이 무엇을하는지, 왜 그런지 말해주지 않았습니다.

이 문제를 어떻게 해결 했습니까?

플래그를 pip사용하여 자세한 출력을 얻을 수 -v있지만 하나는 충분하지 않습니다. -v좀 더 자세한 출력을 위해 최대 3 배까지 여러 번 수행 할 수 있다는 도움말을 RTFM-ed했습니다 . 그래서 나는 :

pip install -vvv <my_package>

그런 다음 출력을 살펴 보았습니다. 한 줄이 내 눈을 사로 잡았습니다.

/ tmp / pip-build-root /의 소스 버전은 0.0.11이며 요구 사항 <my_package>를 충족합니다.

그 디렉토리를 삭제 한 후 pippypi에서 최신 버전 을 설치했습니다.


답변

다음을 사용하여 패키지를 다시 강제로 다운로드하십시오.

pip install --no-cache-dir --upgrade <package>


답변

pip의 메인 테너로서 놀라운 작업을 수행 하는 Marcus Smith 덕분 에이 문제는 2013-07-23에 출시 된 pip 1.4 버전에서 수정되었습니다.

이 버전에 대한 변경 로그의 관련 정보

빌드 디렉터리 정리 및 재사용 안 함과 관련된 여러 문제 (# 413, # 709, # 634, # 602 및 # 939)를 수정했습니다. (풀 # 865, # 948)


답변

압축이 풀린 소스가있는 빌드 디렉토리가 있으면 버전을 확인하지 않는 알려진 버그가 pip에 있음을 여기서 발견 했습니다. 문제가되는 패키지에서 이것을 확인하고 빌드 디렉토리에서 소스를 삭제 한 후 pip가 필요한 버전을 설치했습니다.


답변

pip일부 배포 패키지 (예 : Ubuntu python-pip)와 함께 제공 되는 버전을 사용하는 경우 최신 pip버전 을 설치해야 할 수 있습니다 .

pip최신 버전으로 업데이트 :

sudo pip install -U pip

“virtualenv”의 경우 “sudo”를 건너 뜁니다.

pip install -U pip

셸이 업데이트 -bash: /usr/bin/pip: No such file or directory후 다음과 같은 내용 을 보고하는 경우 다음 명령이 필요할 수 있습니다 pip.

hash -d pip

이제 평소와 같이 패키지를 설치하십시오.

pip install -U foo

또는

pip install foo==package.version.here


답변

pika 0.9.5를 0.9.8로 업데이트하는 데 동일한 문제가 발생했습니다. 유일한 작동 방법은 tarball에서 설치하는 것입니다 : pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz.


답변

제 경우에는 .pip홈 디렉토리에서 폴더 를 삭제해야했고 이후 버전의 여러 라이브러리를 가져올 수있었습니다. 이것은 Linux에 있음을 유의하십시오.

pip --version
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
virtualenv --version
15.1.0