파이썬의 패키지 관리자인 pip 는 "패키지를 전역적으로 설치"하는 잘못된 초기 설계를 갖고 있었습니다.
이때문에 시스템 관리자가 아닐 경우 패키지 설치 자체를 못하는 문제가 생겼고 나중에 user mode 를 추가했지만 일일이 옵션을 주지 않으면 실수하는 경우도 많았습니다.
pipx 는 cli application 설치/관리에 촛점을 맞춘 패키지 관리자로 libraries 보다는 cli application 의 package 를 설치/관리하는데 중점을 두고 있습니다.
설치
pipx 는 python 3.6 이상 버전을 필요로 합니다.
MacOS 는 brew 를 이용해서 설치해 줍니다.
brew install pipx
pipx ensurepath
BASH
기타 다른 운영체제에서는 pip 를 통해서 설치하면 됩니다.
python3 -m pip install --user pipx
python3 -m pipx ensurepath
BASH
다음 내용을 쉘 초기화 파일(.bash_profile, .zshrc) 등에 넣어 줍니다.
export PATH=$PATH:${HOME}/.local/bin
BASH
다시 로그인하거나 아니면 쉘 초기화 파일을 다시 로딩하는 아래 명령어를 실행합니다.
source ~/.bash_profile
BASH
사용
설치
pip 를 쓰듯이 사용하면 됩니다.
$ pipx install PACKAGE
BASH
pipx 에는 특이하게 run 명령이 있는데 지정한 패키지를 다운로드해서 임시적으로 venv 로 가상환경을 만든후에 실행하는 명령어입니다.
$ pipx run pwcowsay moo
---
< moo >
---
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
BASH
python 이 아닌 library 를 pipx 로 설치할 경우 아래와 같이 pipx 대신 pip 나 다른 도구를 사용하라는 에러 메시지가 나오며 이때는 pip 를 사용하면 됩니다.
No apps associated with package fastapi or its dependencies. If you are attempting to install a library, pipx should
not be used. Consider using pip or a similar tool instead.
CODE
ensurepath
pipx 실행에 필요한 디렉터리가 PATH 환경 변수에 있는지 확인하고 없으면 추가해 줍니다. 실행후 다시 login 하거나 source 명령으로 쉘 초기화 파일을 다시 로딩하면 됩니다.
자동 완성
tab 키로 pipx 명령과 옵션을 자동완성하기 위한 shell 별 자동 완성 스크립트를 화면에 출력합니다.
$ pipx completions
bash:
eval "$(register-python-argcomplete pipx)"
zsh:
To activate completions for zsh you need to have
bashcompinit enabled in zsh:
autoload -U bashcompinit
bashcompinit
Afterwards you can enable completion for pipx:
eval "$(register-python-argcomplete pipx)"
BASH
같이 보기
Ref