pip 로 뭐 설치할 때마다 헷갈리던거 이번 글에서 한 번에 정리해보려고 한다.
먼저, 내 컴퓨터에는 anaconda와, python2, 3 모두 깔려있는 상태다.
1. pip vs pip3
이 링크 pip or pip3 to install packages for Python 3? 를 보면, 알 수 있는데, 정리하면 다음과 같다.
터미널에서 다음과 같이 명령어를 치면 pip
와 pip2
, pip3
가 실제로 어디에 설치되어있는지 알 수 있다.
$ ls -l `which pip`
-rwxrwxr-x 1 heumsi staff 234 3 26 18:25 /Users/heumsi/anaconda3/bin/pip
$ ls -l `which pip2`
lrwxr-xr-x 1 heumsi admin 34 5 13 19:49 /usr/local/bin/pip2 -> ../Cellar/python@2/2.7.16/bin/pip2
$ ls -l `which pip3`
lrwxr-xr-x 1 heumsi admin 33 3 19 20:49 /usr/local/bin/pip3 -> ../Cellar/python/3.7.2_2/bin/pip3
살펴보면, 그냥 pip
라고 할 경우, anaconda3 에서 관리하고 있는 전역 pip에 들어가게 된다.pip2
의 경우, local 내에 깔린 pip2 (python2 버전) 에 들어가게 된다.pip3
의 경우, local 내에 깔린 pip3 (python3 버전) 에 들어가게 된다.
2. conda 내에서 pip install
anaconda 로 다음과 같은 가상 환경을 만든 후, 들어갔다고 해보자.
$ conda create -n py36 python=3.6
...
$ source activate py36
$ (py36) ~
이렇게 진입한 콘다 가상환경 안에서 pip 명령어의 차이를 보면,
$ ls -l `which pip`
-rwxrwxr-x 1 heumsi staff 244 3 26 18:27 /Users/heumsi/anaconda3/envs/py36/bin/pip
$ ls -l `which pip2`
lrwxr-xr-x 1 heumsi admin 34 5 13 19:49 /usr/local/bin/pip2 -> ../Cellar/python@2/2.7.16/bin/pip2
$ ls -l `which pip3`
lrwxr-xr-x 1 heumsi admin 33 3 19 20:49 /usr/local/bin/pip3 -> ../Cellar/python/3.7.2_2/bin/pip3
이번엔 pip
입력한 경우, 이전과 다르게 py36
환경의 pip
에 깔리는 것을 알 수 있다.
한편, pip2
와 pip3
는 이전과 동일하게 local pip 에 들어가게되는 것을 알 수 있다.
즉, 가상환경 내에서만 패키지를 설치하려면, 그냥 pip install ~
만 해야한다.
(혹여나 헷갈려서 pip3 install
로 하게되면, 그냥 전역 local에 깔리는 것이다 ;;;)
3. conda install vs pip install
conda install 은 현재 가상환경에만 패키지를 설치한다. pip도 동일하다.
예를 들어,
$ (py36) conda env list
# conda environments:
#
base /Users/heumsi/anaconda3
py36 * /Users/heumsi/anaconda3/envs/py36
현재 가상환경은 py36 이고, 이 상태에서 아래와 같이 입력하면,
$ (py36) conda install jupyter
Py36 에만 jupyter 가 설치되고, 그 외 다른 환경(여기서는 base) 에는 설치되지 않는다.
즉, 일반적으로 원하는 패키지를 현재 환경에만 설치하기 위해, conda install
로 하나 pip install
로 하나 상관없다.
(내 경험상 conda 보다 pip 가 더 빠른 경우가 많았는데, pip 로 하면 conda 와 다른 점이 있을까하는 궁금점이 있었다.)
conda 나 pip 나 모두 파이썬 패키지 매니저라, 관리하는 (다운받을 수 있는) 패키지가 당연히 다른데, 이러한 부분은 모두 스킵하고, 당장 필요한 헷갈리는 부분만 정리했다.
'시행착오 노트' 카테고리의 다른 글
Pypi 에 내가 만든 패키지 배포하면서 알게된거 (0) | 2019.09.19 |
---|---|
folium HeatMapWitheTime 쓸 때 좀 빡치는거. (0) | 2019.05.31 |
git 주요 명령어 및 기타 정리 (0) | 2018.12.16 |
django를 웹사이트 만들며 알게된 점 (4) | 2018.10.12 |
django 웹사이트 배포를 하며 겪은 시행착오 (4) | 2018.10.02 |