python 환경설정, pip, 라이브러리 관리, pyenv

markyang92·2021년 7월 20일
0

python

목록 보기
2/43
post-thumbnail

python 바이너리 관리

python 바이너리 버전

$ python -V
Python 2.7.14

주의 system에서 사용하는 python은 경로 꼬이면 apt 패키지 툴 부터 조차 꼬이기 때문에 pyenv 를 이용해, USER레벨에서 wrapping 해서 사용하는 것을 적극추천

  • /usr/bin/python, /usr/bin/python2, /usr/bin/python3 같이 시스템에서 관리하는 Python은 시스템 apt 저장소 등에도 영향을 미치기 때문에, 그냥 pyenv 같은 걸로 따로 virtual env를 사용하자. 즉,
    • $ sudo apt install python3.x 와 같이 specific version을 명시해서 시스템 파이썬을 건들이면... 매우 꼬일 수 있다.
      • apt 저장소가 안먹히고 일일히 library를 올린다던가...

python 바이너리 위치

$ which python
/usr/bin/python
  1. python을 사용하면, /usr/bin/python (symbolic link)를 사용함
  2. /usr/bin/python (sym link) -> /usr/bin/python2 (sym link) 을 가리킴 -> /usr/bin/python2.7 (binary)를 가리킴

update-alternatives

  • 저기 symlink들이 관리 대상임
  1. $ sudo update-alternatives <--config | --install>로 관리 및 설치한다.

  1. $ sudo update-alternatives --install <관리대상 symlink> <사용할 cmd> <관리대상 symlink의 point to 위치> <priority>

    1-1. /usr/bin/python: 관리대상 symlink
    1-2. python: 사용할 이름
    1-3. /usr/bin/python2: 관리대상의 symlink가 point 할 곳
    1-4. 3: python 이름의 priority

  1. $ sudo update-alternatives --config <사용하는 cmd>
  1. python에 대해 등록된 버전이 없으면 error 뜸, (install 필요)
$ sudo update-alternatives --config python
update-alternatives: error: no alternatives for python

WARN: 위 바이너리를 직접 건드리는 것은 지양

  • 다시 거듭 강조 하지만 $USER 레벨에서 python을 가지고 놀려면 pyenv${HOME}/.pyenv 에서 wrapping 한 파이썬 바이너리를 사용하도록하자.

python 환경 체크

현재 실행 파이썬 바이너리

  1. 현재 실행 중인 파이썬 바이너리는 print(sys.executable) 을 사용하면 STDOUT으로 출력된다.
import sys

print(sys.executable)

# ==== 출력 ==== #
/opt/homebrew/opt/python@3.9/bin/python3.9
  • 본인은 MacOS에서 pyenv를 사용하여 wrappingPython Binary를 사용 중

Python이 보는 PATH

sys.path

import sys
print(sys.path)


  • 위는 Wrapping 하지 않은, Ubuntu 18.04에서 본연의 사용 중인 /usr/bin/python3를 대상으로 sys.path를 찍어 본 것이다.
경로설명
/usr/lib/python3.8-
$HOME/.local/lib/python3.8/site-packages    해당 $USER가 설치한 pip로 설치한 패키지
/usr/local/lib/python3.8/dist-packagesroot가 설치한 pip로 설치한 패키지(e.g., sudo 쓰면 여기 저장됨)
/usr/lib/python3/dist-packagesapt, dpkg 패키지 매니저로 설치한 라이브러리
[venv_name]/lib/python_version/site-packagesvenv환경에서 pip로 설치
  • python version별 각자 site-packages를 가진다.

site-packages

  • 2000s Python 2.0 표준 라이브러리 배포 방식 및 설치 방식에 distutils가 들어감
    • 지금도 setuptoolsdistutils에 의존
    • pipdistutils에 의존

virtualenv

  • PYTHONPATH

pyvenv=venv

공식 사이트 문서 참고


pyenv

  • pyvenv가 아니고 pyenv
  • 사용자 컴퓨터 환경의 글로벌 파이썬 버전을 교체, 관리할 수 있다.
  • 여러 파이썬 버전 중 하나의 시스템 기본 파이썬 버전도 선택 가능
  • 특정 프로젝트 디렉토리 내에서만 기본 파이썬 버전 달라지게할 수 있다.

Python 라이브러리 관리: pip3

  • pip: Python 라이브러리 패키지 관리 툴
    • 그냥 $ pip를 사용하면 python2pip를 사용 할 수도 있기 때문에 헷갈리지 않게 pip3를 사용하면 된다.
  • pip3 = python3 -m pip의 줄임말임
    • $ python3 -m pip == $ pip3

pip가 없는 경우 명시적 설치

  1. pip 설치파일 다운로드
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  1. 이 python파일 실행
$ python3 ./get-pip.py

pip 버전, 위치

$ pip3 --version
  • e.g.
    • Ubuntu에서 기본적으로 설치된 pip: apt 저장소에 'python3-pip' 이름으로 /usr/lib/python3/dist-packages에 설치되어 있음
    • User Specific으로 pip를 관리하자!: 'pip3' 바이너리가 $HOME/.local/bin/pip3 에 위치함
      • 사용자 환경 변수 $PATH에 따라 무엇을 볼 것인지 다름
        • $PATH = $HOME/.local/bin:/usr/bin 순서로 되어 있으면 $HOME/.local/bin/pip3를 먼저 찾음
        • 그냥 Ubuntu에서 기본적으로 설치된 pip를 지우자
          - $ sudo apt remove --purge python3-pip

pip3 업그레이드 명령

  • pip는 특이하게, pip3 upgrade 같은게 없고 pip3 install --upgrade <package> 형식 사용
  • 아래의 명령은 pip자체를 upgrade
$ pip3 install --upgrade pip

pip3 ERROR: XMLRPC

  • pip3 search <package> 명령어가 지원 X
  • https://pypi.org/ 에서 그냥 찾을 것

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글