지금 개발하러갑니다

Python, Python 패키지 설치 경로 본문

Python

Python, Python 패키지 설치 경로

jspark1215 2020. 1. 12. 22:55
python과 python 패키지는 어디에 설치될까?

python과 python 패키지는 어디에 설치될까?

많은 파이썬 프로젝트를 진행해왔지만, python이 구체적으로 어디에 설치되고, pip와 pip를 통해 설치되는 파이썬 패키지들은 어디에 설치되는지에 대해서 자세히 알아본적은 없었다.

python과 python 패키지는 어디에 설치될까?

많은 파이썬 프로젝트를 진행해왔지만, python이 구체적으로 어디에 설치되고, pip와 pip를 통해 설치되는 파이썬 패키지들은 어디에 설치되는지에 대해서 자세히 알아본적은 없었다.

이번에 맥북을 바꾸면서 새롭게 개발환경을 세팅하고 있는데 문득 궁금해져서 정리해본다.

내가 현재 개발에 사용하고 있는 ubuntu를 기반으로 직접 알아보도록 하겠다.

/home/ubuntu# python -V
Python 2.7.12

현재 설치된 파이썬 버전은 2.7.12임을 확인할 수 있다.

python 셸을 실행시켜 한번 직접 확인해보자

Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import os
>>> import sys
>>> sys.executable
‘/usr/bin/python’
>>> os.path.dirname(sys.executable)
‘/usr/bin’

/usr/bin 디렉토리에 설치되었으며, 실질적으로 executable한 파일은 python으로 되어 있음을 확인할 수 있다.

리눅스에서 /usr/bin/ 디렉토리는 사용자들이 사용가능한 명령어 파일들이 존재하는 디렉토리이다. 그렇기 때문에 터미널에서 python을 입력했을때 바로 파이썬 셸이 실행되는 것이다.

나는 python3으로도 개발하는 프로젝트가 있어서 python3도 설치해두었는데, python3 명령어를 입력하면 위에 처럼 파이썬 셸이 실행된다.

/home/ubuntu# python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

그렇다면 python3의 실행파일도 /usr/bin 디렉토리에 있을것이라 생각해볼 수 있다. 이제 한번 확인해보자.

/usr/bin 디렉토리에서 ls -al | grep python 명령어를 사용한 결과다.

ls -al | grep python

결과를 보면 많은 파일들이 보이며, 그중에서는 파이썬 파일도 있다. python 파일의 세부 내용을 보면 lrwxrwxrwx 라고 나와 있는데, 첫글자가 l 인것은 python파일이 link 파일임을 나타내고, python -> python2.7 에서 python 이라는 명령어를 입력하면, 실제로는 python2.7이 실행되는것이다.

만약에 내가 python2.7이 아닌 2.6버전을 설치했다면, python -> python2.6이라고 출력되었을 것이다.

python3의 경우도 마찬가지로, python3 -> python3.5에서 3.5버전의 파이썬이 설치됨을 확인할 수 있다.

python 실행파일이 존재하는 위치는 확인했으니, 그 다음에는 파이썬 패키지 관리자인 pip와 pip에서 설치한 파이썬 패키지는 어디에 설치되는지 확인해보도록 하자.

그런데 /usr/bin 디렉토리에서는 ls -al | grep pip를 해도 결과가 나오지 않는다.

그래서 리눅스에서 명령어 경로를 찾아주는 명령어인 which를 사용해보도록 하겠다.

ubuntu@[linux]:/usr/bin$ which pip
/usr/local/bin/pip

pip는 /usr/local/bin 디렉토리에 존재한다는것을 확인하였다.

여기서 궁금한점! /usr/bin과 /usr/local/bin의 차이점은 뭘까?

리눅스에서는 많은 bin 디렉토리들이 있는데 여기서는 우선 /usr/bin과 /usr/local/bin 두개만을 알아보도록 하자.

/usr/bin에서는 콘솔에서 확장된 프로그램들이 들어가며, 대표적으로 sudo와 vi가 있다.

/usr/local/bin에는 일반 사용자들을 위한 프로그램이 들어간다. 대신, /usr/bin과 다르게 패키지 관리자들에 의해 관리되지 않는다. 그렇기 때문에 직접 설치하는 프로그램이 /usr/bin에 위치하게 되면 다른 스크립트들에 의해 업그레이드 되거나 삭제될 수 있다고 한다.

리눅스 디렉토리에 관련된 세부 내용은 별도의 글에서 다루도록 하겠다.

그렇다면 pip를 통해 설치되는 파이썬 패키지는 어디에 위치하는 것일까?

pip list라는 명령어를 통해서 pip로 설치한 파이썬 패키지들을 확인할 수 있다.

pip list

기존에 설치된 패키지들중, Flask가 설치된 위치를 확인해보자.

pip show [패키지 이름]을 통해 설치된 위치를 확인해볼 수 있다.

pip show Flask

Flask 패키지에 관한 여러 정보들이 나온다. 그중에서, Location을 살펴보면 /usr/local/lib/python2.7/dist-packages 라고 나온다.

/usr/local/lib 디렉토리에 python2.7에 관한 패키지들이 설치되는 위치가 있음을 확인할 수 있다.

그렇다면, python3.5의 패키지들 역시 /usr/local/lib 하위 디렉토리에 설치됨을 추측해본다.

/usr/local/lib

실제로 그렇다..

pip가 패키지를 설치하는 정확한 디렉토리는 아래와 같다.

<virtualenv_name>/lib/<python_ver>/site-packages

위 경우에는 virtual environment에 설치된 것이 아니기 때문에 기본 파이썬 라이브러리 경로에 설치되는 것이다.

다음 글에서는 리눅스 디렉토리 및 virtual environment에 관해 다루도록 하겠다.

'Python' 카테고리의 다른 글

Python textwrap 모듈  (0) 2020.01.12
Comments