pip를 사용하여 특정 패키지 버전 설치


1313

--no-site-packages옵션으로 만든 새로운 virtualenv를 사용하여 MySQL_python 어댑터 버전 1.2.2를 설치하려고합니다 . PyPi에 표시된 현재 버전은 1.2.3 입니다. 이전 버전을 설치하는 방법이 있습니까? 나는 이것을해야한다는 기사를 발견했다.

pip install MySQL_python==1.2.2

그러나 설치되면 여전히 MySQL_python-1.2.3-py2.6.egg-info사이트 패키지에 표시됩니다. 이것은이 패키지에 특정한 문제입니까, 아니면 제가 잘못하고 있습니까?


17
힌트를 주셔서 감사합니다, 이것은 저를 통해 openpyxl의 이전 버전을 설치했습니다pip install MySQL_python==1.8.9
tim

4
예, 팬더도 pip install -Iv pandas==0.12.0
마찬가지였습니다

1
뿐만 아니라 나를 위해 일한 : 핍 == 0.2.4 xvfbwrapper 설치
amitdatta

답변:


894

TL; DR :

  • pip install -Iv(즉 pip install -Iv MySQL_python==1.2.2)

먼저, 당신이하려는 일에 두 가지 문제가 있습니다. 이미 설치된 버전이 있으므로 현재 기존 드라이버를 제거하거나 사용해야합니다.pip install -I MySQL_python==1.2.2

그러나 곧 이것이 작동하지 않음을 알게 될 것입니다. pip의 설치 로그를 보거나 수행 pip install -Iv MySQL_python==1.2.2하면 PyPI URL 링크가 MySQL_python v1.2.2에서 작동하지 않는 것을 알 수 있습니다. 여기에서 확인할 수 있습니다 : http://pypi.python.org/pypi/MySQL-python/1.2.2

다운로드 링크 404 및 대체 URL 링크는 sourceforge.net의 최근 업그레이드 및 PyPI의 오래된 URL로 인해 무한정 리디렉션됩니다.

따라서 드라이버를 올바르게 설치하려면 다음 단계를 수행하십시오.

pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download

1
여러 버전을 사용하는 데 문제가 없어야합니다. 즉, 모든 버전에 대해 새 폴더를 만들고 .pth 파일을 사용하는 것입니다.
Jochen Ritzel

3
올바른 버전을 설치하므로이 질문에 대한 답변입니다. 도움을 주셔서 감사합니다. '_mysql'확장을 빌드하는 중 다른 오류가 발생했습니다. "오류 : '/usr/bin/gcc-4.2'명령이 종료 상태 1에서 실패했습니다." GCC가 있고 MySQL_python 1.2.3 설치가 원활하게 진행된다는 것을 알고 있습니다. 다른 사람들이이 문제를 특히 1.2.2와 함께 보았습니까?
Joe

다른 질문을하고 pip에서 오는 오류 메시지를 게시하십시오.
Mahmoud Abdelkader

2
물론-여기 링크가 있습니다 : stackoverflow.com/questions/5226945/…
Joe

4
기존 설치를 이미 제거한 경우 -I 옵션을 사용하는 이유가 궁금합니다. 자세한 내용을 알려주시겠습니까?
Joe

509

pip install명령 으로 버전 범위를 사용할 수도 있습니다 . 이 같은:

pip install 'stevedore>=1.3.0,<1.4.0'

패키지가 이미 설치되어 있고 다운 그레이드하려는 경우 다음과 --force-reinstall같이 추가 하십시오.

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall

128
예를 들면 : $ pip install 'xkcdpass==1.2.5' --force-reinstall
jschank

1
완전한! Ubunto 15.04에서 실행되었으며 기존 라이브러리를 지정된 버전으로 (자동으로) 대체했습니다. 내 모든 문제를 해결했습니다!
zevij

2
파이썬 2의 경우 '대신에 큰 따옴표를 사용해야했습니다.
Prime_Aqasix

6
@ HandofC'thuhlu 나는 파이썬 2가 아닌 창에 큰 따옴표를 사용해야한다고 생각합니다.
SmartManoj

3
Windows에서 큰 따옴표 사용 : pip install "
stevedore

139

이 게시물 에서 제안한 한 가지 방법은 다음과 같이 버전을 언급하는 pip것입니다.

pip install -Iv MySQL_python==1.2.2

==, 해당 버전 만 설치하려면 버전 번호를 사용 하고 언급하십시오. -I, --ignore-installed이미 설치된 패키지를 무시합니다.


1
조심해! 나는 이것이 다른 버전을 설치하는 경험이 서로 옆에 ! 또한 흥미롭게 pip list도 그것을 알지 못했지만 conda list(그리고 다른 패키지 버전을 표시 할 것입니다). 그것은 또한 Pycharm을 완전히 혼란 시켰다 .
Lionel Trebuchon

66

처음, 업그레이드 또는 다운 그레이드 사용 여부에 관계없이 특정 Python 패키지 버전을 설치하려면 다음을 수행하십시오.

pip install --force-reinstall MySQL_python==1.2.4

MySQL_python 버전 1.2.2를 사용할 수 없으므로 다른 버전을 사용했습니다. 색인에서 사용 가능한 모든 패키지 버전을 보려면 해당 버전을 제외하십시오.

pip install MySQL_python==

4
pip 10.0.1에서는 이것이 작동하는 유일한 솔루션입니다. "-I"옵션은 실제로 이전 버전을 다시 설치합니다.
FedFranzoni 2016 년

38

패키지가 이미 설치되어 있으면 pip는 다른 버전으로 덮어 쓰지 않을 것이라고 생각합니다. -I이전 버전을 무시하는 데 사용 합니다.


1
--no-site-packages 옵션으로 만든 새로운 virtualenv를 사용하여 설치하지 않았습니다
Joe

2
좋아, 그래서 당신은 버전 1.2.2를 요청하고 여전히 1.2.3을 설치하고, 다른 아무것도 설치되지 않았습니까? 사용한 구문은 특정 버전을 얻는 데 적합합니다.
dappawit

"--no-site-packages 옵션으로 생성 된 새로운 virtualenv 사용"; 당신은 명령이보다 선행해야 unset PYTHONPATH하므로 유지하기 위해 pip당신의 사전 설치된 라이브러리 보는
user5359531을

17

때때로 이전에 설치된 버전이 캐시됩니다.

~$ pip install pillow==5.2.0

: 그것은 다음 반환
요구 사항이 이미 충족 : /home/ubuntu/anaconda3/lib/python3.6/site-packages 베개 == 5.2.0 (5.2.0)

--no-cache-dir을 -I와 함께 사용하여 이것을 덮어 쓸 수 있습니다

~$ pip install --no-cache-dir -I pillow==5.2.0

5

이것은 pip 10 버전에서 도입 된 주요 변경 사항으로 보였으므로 호환되는 버전으로 다운 그레이드했습니다.

pip install 'pip<10' 

이 명령은 pip에게 버전 10보다 낮은 버전의 모듈을 설치하도록 지시합니다. virutalenv에서이 작업을 수행하면 사이트의 Python 설치를 방해 하지 않습니다.


5

최근에 어딘가에 문서화하려는 pip-I플래그를 사용할 때 문제가 발생했습니다 .

-I없는 진행하기 전에 기존 패키지를 제거; 그냥 오래된 것 위에 설치합니다. 즉, 버전간에 삭제해야하는 모든 파일이 그대로 유지됩니다. 해당 파일이 설치된 다른 모듈과 이름을 공유하는 경우 이상한 동작이 발생할 수 있습니다.

예를 들어,이라는 패키지가 있다고 가정 해 봅시다 package. packages 파일 중 하나 에서을 사용 import datetime합니다. 이제에서는 package@2.0.0표준 라이브러리 datetime모듈을 가리 키지 만에서 어떤 이유로 든 표준 라이브러리 버전의 대체로 package@3.0.0로컬을 추가했습니다 datetime.py.

이제 내가 실행한다고 말하지만 pip install package==3.0.0나중에 실제로 버전을 원한다는 것을 알게 2.0.0됩니다. 지금 실행하면 pip install -I package==2.0.0, 기존의 datetime.py어떤 호출 할 수 있도록 파일은 제거되지 않습니다 import datetime잘못된 모듈을 가져옵니다.

필자의 경우 최신 버전의 패키지가 Python 3과 호환되는 파일을 추가하고 Python 2를 지원하도록 패키지 버전을 다운 그레이드 할 때 Python-3-only 모듈을 계속 가져 오기 때문에 이상한 구문 오류가 발생했습니다.

이를 바탕으로, -I설치된 패키지 버전을 업데이트 할 때 이전 패키지를 제거하는 것이 항상 사용 하는 것이 좋습니다 .


3

이 아래 명령은 나를 위해 일했습니다.

파이썬 버전-2.7

패키지-python-jenkins

명령- $ pip install 'python-jenkins>=1.1.1'


친애하는 downvoter,이 답변이 왜 downvoted되었는지 정당화 해주세요.
Tapan Hegde

나는 공감하지 않았지만 이것이 질문에 대답하지 못하거나 OP가 문제를 해결하는 데 사용할 수있는 유용한 정보를 제공하지 않는다는 것을 알 수 있습니다.
TheAmigo

0

다음과 같은 버전으로 패키지를 설치할 수있는 두 가지 방법이 있습니다.- A). pip install -Iv package-name == 버전 B). pip install -v package-name == 버전

A

여기서 설치 중에 -I 옵션을 사용하는 경우 (패키지가 이미 설치되어 있는지 알 수없는 경우) (예 : 'pip install -Iv pyreadline == 2. *'또는 다른 것) 버전이 다른 기존 패키지와 동일한 패키지.

B의 경우

  1. 처음에는 깨진 요구 사항이 없는지 확인하는 것이 좋습니다. 핍 확인

그런 다음 pip list로 이미 설치된 것을 확인하십시오.

3. 패키지 목록에 특정 버전으로 설치하려는 패키지가 포함되어 있으면 pip uninstall package-name 으로이 버전의 패키지를 먼저 제거하는 것이 좋습니다.

4. 이제 pip install -v package-name == version 과 같이 특정 버전으로 동일한 패키지를 다시 설치할 수 있습니다. 예 : pip install -v pyreadline == 2. *


0

최신 버전으로 업데이트하고 최신 버전이 무엇인지 모르는 경우 입력 할 수 있습니다.

pip install MySQL_python-업그레이드

사용 가능한 최신 버전의 MySQL_python이 업데이트되며 다른 패키지 버전에도 사용할 수 있습니다.

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