나는 여전히 내가 가지고있는 이 문제 를 이해하려고 노력 하고 있으며 sudo apt-get install python-XXX
vs pip install
에 관한 많은 게시물을 읽었으며 그 문제를 이해하고 있습니다 (apt-get은 완전히 다른 그룹의 사람들이 핍, 자동으로 관리하는 패키지 저장소입니다) 사용 가능한 업데이트가있을 때 다른 모든 항목과 함께 업데이트합니다 (바이너리 등). 그러나 내가 이해하지 못하고 답을 찾지 못한 몇 가지 특별한 것들이 있습니다.
-
어떤 이유로 든 먼저 패키지를 설치하십시오 (예 : numpy) with
sudo apt-get install numpy
, 그리고 나중에pip install numpy
. 무슨 일이야? 다른 버전 (예 : .local / lib)과 함께 다른 곳에 numpy가 다시 설치 되었으므로 이제 두 개의 독립 버전이 있습니까? 가져올 때 어느 것이 사용됩니까? (내가 올바르게 이해했다면 그것은 별개이며 apt-get은 시스템 전체이지만이 질문에 대한 상충되는 답변을 보았습니다. 예를 들어 here ) -
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
있습니까? 아니면 그냥 바보입니까? -
나는 내 핍이 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으로 여러 번 설치했기 때문에 중복을 확인하고 정리하는 가장 좋은 방법은 무엇입니까? 스크립트를 사용하여 모두 제거하고 다시 설치하는 것이 안전하지 않다고 생각합니다.
추신 : 나는 이것을 새로운 질문으로 게시할지 아니면 원래의 문제에 대한 답변으로 게시해야하는지 확신하지 못했습니다. 이 질문은 훨씬 간결하고 일반적이기 때문에 더 나을 것이라고 생각했습니다. 내가 틀렸다면 사과드립니다.
답변
아카이브의 경우 많은 시행 착오 후에 이것이 내가 찾은 것입니다 (돌이켜 보면 일부 비트는 의미가 있고 다른 일부는 매우 혼란 스러울 수 있습니다).
-
이 경우
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 xyz
sudo 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