apt-get 설치 python-xxx 대 pip 설치


8

나는 여전히 내가 가지고있는 문제 를 이해하려고 노력 하고 있으며 sudo apt-get install python-XXXvs pip install에 관한 많은 게시물을 읽었으며 그 문제를 이해하고 있습니다 (apt-get은 완전히 다른 그룹의 사람들이 핍, 자동으로 관리하는 패키지 저장소입니다) 사용 가능한 업데이트가있을 때 다른 모든 항목과 함께 업데이트합니다 (바이너리 등). 그러나 내가 이해하지 못하고 답을 찾지 못한 몇 가지 특별한 것들이 있습니다.

  1. 어떤 이유로 든 먼저 패키지를 설치하십시오 (예 : numpy) with sudo apt-get install numpy, 그리고 나중에 pip install numpy. 무슨 일이야? 다른 버전 (예 : .local / lib)과 함께 다른 곳에 numpy가 다시 설치 되었으므로 이제 두 개의 독립 버전이 있습니까? 가져올 때 어느 것이 사용됩니까? (내가 올바르게 이해했다면 그것은 별개이며 apt-get은 시스템 전체이지만이 질문에 대한 상충되는 답변을 보았습니다. 예를 들어 here )

  2. apt-get의 많은 패키지가 pip에 비해 상당히 오래된 것으로 나타났습니다. 예를 들어 ipython 2.3.0 vs 4.0.3, numpy 1.10.2 vs 1.10.4, spyder 2.3.5 vs 2.3.8 작성시. 먼저 sudo apt-get install다음에 이점 이 pip install있습니까? 아니면 그냥 바보입니까?

  3. 나는 내 핍이 1.5.6이라는 것을 알았습니다 sudo apt-get install python-pip. 그렇다면 현재 최신 버전 입니다. 반면에 핍은 8.0.2입니다! 이전 버전에서는 동일한 패키지를 반복해서 설치할 수 있고 경고하지 않기 때문에 이것이 문제를 일으킨 것으로 생각됩니다. 그리고 어떻게 든 오래된 것을 덮어 쓰지 않습니다. 동일한 패키지 (예 : numpy)를 계속 제거 할 수 있기 때문에 이것을 깨달았으며 항상 할 때 항상 있습니다 pip show numpy. 이상하게도 항상 동일한 폴더 (.local /)를 표시하지만 버전이 다릅니다. : S 이에 관한 두 가지 질문이 있습니다.

    ㅏ. pip를 설치하는 가장 좋은 방법은 무엇입니까? 나는 현재쪽으로 생각이 기울고있어 sudo apt-get install python-pip, pip install pip, sudo apt-get purge python-pip. 그게 현명한가요? 나에게는 조금 어리석은 것 같습니다.

    비. 이제 많은 패키지가 중복 설치로 엉망이 된 것을 알았습니다. 일부는 apt-get으로 설치 한 다음 나중에 pip 1.5.6으로 여러 번 설치했기 때문에 중복을 확인하고 정리하는 가장 좋은 방법은 무엇입니까? 스크립트를 사용하여 모두 제거하고 다시 설치하는 것이 안전하지 않다고 생각합니다.

추신 : 나는 이것을 새로운 질문으로 게시할지 아니면 원래의 문제에 대한 답변으로 게시해야하는지 확신하지 못했습니다. 이 질문은 훨씬 간결하고 일반적이기 때문에 더 나을 것이라고 생각했습니다. 내가 틀렸다면 사과드립니다.



나는 실제로 내 질문에 그 게시물을 언급하는데, 혼란을 많이 없애는 데 매우 도움이되었지만 위의 질문에 대답하지 못했습니다 (적어도 볼 수 없었습니다)
memo

오, 다른 질문에 방금 링크 된 게시물 목록을보고 보지 못했습니다.
muru

답변:


8

아카이브의 경우 많은 시행 착오 후에 이것이 내가 찾은 것입니다 (돌이켜 보면 일부 비트는 의미가 있고 다른 일부는 매우 혼란 스러울 수 있습니다).

  • 이 경우 sudo apt-get install python-xyz패키지 가에 나타납니다 pip list. 물론 파이썬으로 가져올 수는 있지만 pip.get_installed_distributions () 에는 나타나지 않습니다 . (분명히 그 반대는 사실 이 아닙니다 . 즉, 그렇게 pip install xyz하면 apt / synaptic에 나타나지 않을 것입니다)

  • sudo apt-get install python-xyz당신이 pip install xyz일을 한 후에 는 가지고있는 pip의 버전에 달려 있습니다.

OLD v1.5.6 (현재 버전은 Ubuntu PPA에 제공) :

  • 이 버전의 pip (1.5.6)는 다른 위치에 xyz의 새 사본 만 설치합니다. 여러 사본이 생겨 큰 혼란이 발생합니다. 예 :

    • apt-get의 numpy는 /usr/local/lib/python2.7/dist-packages에서 1.8.2입니다.
    • pip의 numpy는 ~ / .local / lib / python2.7 / site-packages에서 1.10.4입니다.
  • 내가 할 경우 pip install numpy다시 한번, 그것은 다운로드하고 다시 설치합니다. 따라서 실제로 액세스 할 수없는 여러 버전이 생길 수 있습니다. 내가 할 수있는 pip install numpy시간을 5 배, 그리고 내가 할 수있는 pip uninstall numpy 5x시간! 분명히 그렇게하지 않도록주의를 기울일 수 있지만 때로는 다른 소프트웨어의 설치 스크립트가 약간 부주의하여 일을 망칠 수 있습니다. 우분투가 공식적 으로이 버전의 pip를 배송한다고 믿을 수 없습니다.

새로운 v8.0.2 (pip 자체의 현재 버전) :

  • pip의 최신 버전 (예 : pip에있는 8.0.2)은 요구 사항이 이미 충족되었다는 동일한 패키지 설치를 거부합니다. 따라서 새 버전을 설치할 수 없습니다. 이것은 좋은 동작입니다 (나중에이 버전의 pip를 얻는 것에 대한 자세한 내용).

  • 이 경우 업그레이드 만 가능합니다 (예 : -U 플래그로 설치).

  • 그러나 pip install -U xyzsudo apt-get이 설치된 패키지 를 사용하려고 하면 apt-get이 / usr /에 설치되어 있고 루트 액세스 권한이 있어야 사용 권한 오류가 발생합니다.

  • 따라서 AFAIK는 sudo pip install -U xyz업데이트 할 수밖에 없습니다 . 이 경우 pip는 sudo apt-get이 작성한 것과 동일한 위치에 최신 패키지를 설치합니다. 예를 들어 내 경우에는 /usr/local/lib/python2.7/dist-packages입니다. 이거 좋다

  • apt의 패키지가 종종 pip의 패키지보다 훨씬 오래되었다는 것을 지적 할 가치가 있습니다 (예 : numpy v1.8.2 vs 1.10.4, scipy 0.14.1 vs 0.17.0, ipython 2.3 vs 4.0.3, spyder 2.3.5 vs 2.3.8)

내 생각은 n-nose spyder 와 sudo apt-get같은 큰 것들을 얻는 것입니다 . sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy pytho

그런 다음 (또는 적어도 일부)를로 업데이트하십시오 sudo pip install -U.

NB pip (매우 메타)에서 새 pip를 얻는 것이 매우 중요해 보입니다.

sudo apt-get install python-pip
sudo pip install -U pip

추신 : 나는 virtualenv를 알고 있지만 지금은 필요가 없습니다. 하나의 개발 환경 만 있으면됩니다.

그리고 여기에 패키지, 버전 및 경로 목록을 덤프하는 작은 스크립트가 있습니다 (그러나 apt-get의 모듈이 아닌 pip 설치된 모듈에서만 작동합니다)

import pip
pp = pip.get_installed_distributions()
for p in sorted([p.location+"\t"+p.project_name+" ("+p.version+")" for p in pp]):
    print p
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.