파이썬의 패키지 관리자인 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 명령으로 쉘 초기화 파일을 다시 로딩하면 됩니다.

$ pipx ensurepath
BASH

자동 완성

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