pip는 apt-get으로 설치된 패키지를 덮어 쓰나요?


9

실수로 미리 pip install설치 한 패키지를 apt-get미리 설치하면 어떻게됩니까? 최신 버전 (예 :을 사용하여 설치 한 버전)을 사용할 수 pip있습니까? 다른 방법으로 어떻게 되나요?

참고 : 나는 가상 환경에서 파이썬을 사용하지 않습니다 (단순히 왜 내가 해야하는지 모르겠 기 때문에 파이썬을 데이터 분석 도구로 사용하고 대부분 최신 버전을 사용하려고합니다).


내가 틀리지 않으면, apt-getandpip
Lucio

Corerct pip/usr/local기본적으로 서브 디렉토리 또는 원하는 경우 다른 디렉토리에 설치합니다 .
Timo

3
그러나 예를 들어, 내가 먼저 apt-get install python-pandas다음에 pip install pandas또는 다른 방법으로 수행하면 어떻게됩니까 ? 전역 파이썬 설치는 두 버전 중 어느 버전을 사용해야하는지 어떻게 알 수 있습니까?
Fred S

1
@FredS : 터미널에서 다음 명령을 실행하면, 파이썬은 특정 순서로 모듈을 검색합니다 :python -c "import sys; print sys.path"
Timo

답변:


3

@Timo가 그의 의견에서 언급했듯이 python -c "import sys; print sys.path"Python 설치를위한 Python 모듈로드 경로를 제공합니다. 16.04의 비교적 새로운 설치에는 3 개의 디렉토리가 있습니다 (10 개의 디렉토리 중).

  • ''(응용 프로그램 디렉토리)
  • '/usr/local/lib/python2.7/dist-packages'(pip가 모듈을 설치하는 위치)
  • '/usr/lib/python2.7/dist-packages'(적합한 설치 모듈)

그러나 가장 중요한 것은 '/usr/local/lib/python2.7/dist-packages'가 '/usr/lib/python2.7/dist-packages'보다 우선 순위가 높다는 것입니다.

apt (-get)를 통해 파이썬 패키지를 처음 설치하면 '/usr/lib/python2.7/dist-packages'에 설치됩니다. 나중에 pip를 사용하여 모듈을 설치하려고하면 pip는 처음에 종속성이 이미 충족되었다는 경고를 표시 한 다음 종료합니다. --upgrade 플래그를 추가하면 pip를 강제로 설치하여 모듈을 '/usr/local/lib/python2.7/dist-packages'에 설치합니다. ( '/usr/lib/python2.7/dist-packages'의 버전이 제거되지 않았다는 출력에 유의하십시오.) 그런 다음 다음을 사용하여 pip-installed 버전이 사용중인 버전인지 확인할 수 있습니다 python -c "import MODULE; print MODULE.__file__"..

따라서 이것은 pip를 통해 설치된 패키지가 시스템 설치 패키지보다 우선하지만 apt (-get)에서 설치된 것을 덮어 쓰지 않음을 보여줍니다.


1

@Bryan Wyatt에 추가하려면 PIP 설치 / 업그레이드 된 항목이 APT 설치 패키지보다 우선해야하는 것이 바람직합니다. 내 시스템은 apt와 pip 경로를 반대로했습니다. 다른 항목은 무시해야합니다.

  • '/usr/local/lib/python2.7/dist-packages'(pip가 모듈을 설치하는 위치)
  • '/usr/lib/python2.7/dist-packages'(적합한 설치 모듈)

그러나 내가 취해야 할 알 수없는 조치로 인해이 경로는 나에게 반대 순서로 나타납니다 (다른 항목은 무시).

  • '/usr/lib/python2.7/dist-packages'(적합한 설치 모듈)
  • '/usr/local/lib/python2.7/dist-packages'(pip가 모듈을 설치하는 위치)

내가 추가 않은 일로 밝혀 /usr/lib/python2.7/dist-packages에를 /usr/local/lib/python2.7/dist-packages/easy-install.pth. 단순히 라인을 제거하여 easy-install.pth잘못 주문을 수정했습니다. /usr/lib/python2.7/dist-packages그것은 나중에 다른 단계에서 추가되기 때문에 여전히 내 길에 있습니다.

참고로, pprint는 경로를 더 멋지게 표시합니다.

$ python -c "import sys; import pprint; pprint.pprint(sys.path)"
['',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.