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 |
하나씩 점을 찍어 나가며