<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
  <id>https://titanium-haiku-594.appspot.com/</id>
  <title>Blog - Posts tagged pipx</title>
  <updated>2024-07-16T17:59:54.314523+00:00</updated>
  <link href="https://titanium-haiku-594.appspot.com/"/>
  <link href="https://titanium-haiku-594.appspot.com/blog/tag/pipx/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.8">ABlog</generator>
  <entry>
    <id>https://titanium-haiku-594.appspot.com/blog/pipx/</id>
    <title>파이썬 CLI 프로그램 배포를 위한 최선의 선택! pipx</title>
    <updated>2024-05-08T00:00:00+09:00</updated>
    <author>
      <name>search5</name>
    </author>
    <content type="html">&lt;section id="cli-pipx"&gt;

&lt;p&gt;파이썬으로 만들어진 프로그램을 배포한 후 실행하려면 크게 2가지 방법이 사용됩니다.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;p&gt;운영체제에서 바로 실행 가능한 형태로 변환하고 배포하기&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;파이썬 패키지 파일로 묶어서 배포하기&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;개별의 배포 방법은 배포하려는 파이썬 프로그램의 특징에 따라 다릅니다. 첫 번째로 살펴볼 “운영체제에서 바로 실행 가능한 형태로 변환하고 배포하기” 입니다.&lt;/p&gt;
&lt;p&gt;일반적으로 파이썬으로 작성된 프로그램은 스크립트 파일 형태로 파이썬 인터프리터(python.exe)가 시스템에 설치되어 있어야만 실행할 수 있습니다.&lt;/p&gt;
&lt;p&gt;여러분이 만든 파이썬 스크립트를 복사해서 다른 이에게 배포하면 십중팔구로 스크립트 파일을 전달받은 사람은 “이걸 어떻게 실행해?”라며 당황합니다.&lt;/p&gt;
&lt;p&gt;이런 이유로 파이썬 스크립트를 다른 이에게 전달하기 이전에 배포받는 사람이 쉽게 실행할 수 있도록 exe 파일이나 맥이나 리눅스에서 실행 가능한 바이너리로 묶어서 배포해야 합니다.&lt;/p&gt;
&lt;p&gt;여기에 사용하는 여러 파이썬 도구가 있으며 향후 소개하겠습니다.&lt;/p&gt;
&lt;p&gt;두 번째로 살펴볼 “파이썬 패키지 파일로 묶어서 배포하기” 방법은 배포하려는 파이썬 프로그램이 라이브러리로서의 성격을 가지고 있거나 셸(shell)에서 바로 실행 가능한 파이썬 프로그램을 배포하기 위해서입니다.&lt;/p&gt;
&lt;p&gt;파이썬 패키지 파일은 일반적으로 wheel 타입의 whl 확장자를 가진 파일이 배포되기 때문에 배포받는 사람의 컴퓨터에 파이썬 인터프리터가 설치되어 있어야 합니다.&lt;/p&gt;
&lt;p&gt;드문 경우이긴 하지만 파이썬 패키지가 요구하는 최소 파이썬 버전이 시스템에 설치된 파이썬 버전보다 높은 경우 패키지 설치에 실패하기도 합니다.&lt;/p&gt;
&lt;section id="id1"&gt;
&lt;h2&gt;콘솔 스크립트의 등장&lt;/h2&gt;
&lt;p&gt;파이썬은 패키지 파일을 설치하면서 패키지 파일 내부에 정의되어 있는 “콘솔 스크립트” 를 설치해주는 기능이 있습니다.&lt;/p&gt;
&lt;p&gt;파이썬 패키지 파일 내부에 정의되어 있는 콘솔 스크립트는 패키지 파일에 포함되어 있는 특정 파이썬 스크립트를 배포하는 운영체제의 셸에서 바로 실행할 수 있도록 하는 기능입니다.&lt;/p&gt;
&lt;p&gt;PEP 517-518에서 정의된 새로운 파이썬 패키징 규격에서는 콘솔 스크립트를 &lt;cite&gt;pyproject.toml&lt;/cite&gt; 파일에 정의하도록 정의하고 있으며 대다수의 파이썬 패키징 도구가 이를 준수하고 있습니다.&lt;/p&gt;
&lt;p&gt;콘솔 스크립트가 실제로 실행하는 파이썬 스크립트는 일반적으로 다음과 같은 구조를 가지고 있습니다. 예시로 sample이란 이름을 가진 콘솔 스크립트가 있다고 가정해보겠습니다.&lt;/p&gt;
&lt;div class="literal-block-wrapper docutils container" id="id11"&gt;
&lt;div class="code-block-caption"&gt;&lt;span class="caption-text"&gt;sample.py&lt;/span&gt;&lt;/div&gt;
&lt;div class="highlight-python notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;sample 콘솔 스크립트가 실행되면 이 함수가 호출됩니다&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;콘솔 스크립트는 파이썬 스크립트에 정의되어 있는 함수를 실행하기 때문에 파이썬 스크립트는 반드시 함수가 하나 선언되어 있어야 합니다.&lt;/p&gt;
&lt;section id="id2"&gt;
&lt;h3&gt;콘솔 스크립트가 없다면 어떨까?&lt;/h3&gt;
&lt;p&gt;일반적으로 파이썬 스크립트를 셸에서 직접 실행하려면 &lt;cite&gt;if __name__ == ‘__main__’&lt;/cite&gt; 를 추가합니다.&lt;/p&gt;
&lt;p&gt;만약 콘솔 스크립트 기능이 파이썬에 없으면 파이썬 스크립트를 실행하기 위해 항상 다음과 같이 명령을 실헹해야 합니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;sample.py
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;물론 위 명령을 실행하는 WD(Working Directory)에 sample.py가 있어야 하며 &lt;cite&gt;__name__&lt;/cite&gt; 이 &lt;cite&gt;__main__&lt;/cite&gt; 인지 비교한 후에 main 함수를 실행하는 코드가 있어야 합니다.&lt;/p&gt;
&lt;p&gt;파이썬 스크립트를 직접 실행하는 방법은 간단하지만 스크립트를 실행하기 위해 항상 WD로 이동해야 한다는 단점은 치명적입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id3"&gt;
&lt;h3&gt;콘솔 스크립트가 있다면?&lt;/h3&gt;
&lt;p&gt;파이썬 스크립트 파일을 콘솔 스크립트로 실행할 수 있게 되면 python 명령으로 직접 파일을 실행하지도 않으며 WD의 위치에 영향을 받지 않습니다.&lt;/p&gt;
&lt;p&gt;다만, 파이썬 패키지 파일을 파이썬 가상 환경에 설치했다면 콘솔 스크립트도 셸의 실행 환경이 파이썬 가상 환경에 진입해 있어야만 실행 가능하다는 단점이 있습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="id4"&gt;
&lt;h2&gt;콘솔 스크립트를 파이썬 가상 환경에 구애받지 않고 쓰고 싶어요&lt;/h2&gt;
&lt;p&gt;파이썬으로 개발된 프로그램 중에는 여러 유용한 프로그램이 많습니다. 게중 유명한 것을 나열해보면 다음과 같은 것이 있습니다.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;httpie (HTTPie 프로그램의 콘솔 스크립트 버전)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;pipenv (파이썬 종속성 관리 도구)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;poetry (파이썬 패키징 및 종속성 관리 도구)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;certbot (LetsEncrypt 인증서 배포 도구)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 프로그램들은 일반적으로 WD에 영향을 받지 않고 어디서든 실행할 수 있는게 좋습니다. 따라서 시스템 전역의 파이썬 환경에 설치하는 것이 좋지만 &lt;cite&gt;PEP 668&lt;/cite&gt; 의 제약이 있어 리눅스의 경우 시스템 전역의 파이썬 환경에 설치하는 것이 권장되지 않는 방식입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="pipx"&gt;
&lt;h2&gt;PIPX 사용하기&lt;/h2&gt;
&lt;img alt="https://titanium-haiku-594.appspot.com/_images/pipx.png" src="https://titanium-haiku-594.appspot.com/_images/pipx.png" style="width: 229px;" /&gt;
&lt;p&gt;그래서 pipx가 등장합니다. pipx는 pipsi와 npx에 영향을 받은 CLI 프로그램(콘솔 스크립트) 배포 도구 입니다.&lt;/p&gt;
&lt;p&gt;pipx를 사용하면 앞의 httpie나 pipenv 같은 프로그램을 배포하기 위해 파이썬 가상 환경을 만들고 프로그램을 설치한 다음 실행하기 위한 단계가 줄어듭니다.&lt;/p&gt;
&lt;section id="id5"&gt;
&lt;h3&gt;pipx 설치하기&lt;/h3&gt;
&lt;p&gt;pipx를 설치하려면 시스템에 파이썬 인터프리터가 설치되어 있어야 합니다. pipx를 운영체제에 설치하는 방법은 쉽습니다.&lt;/p&gt;
&lt;p&gt;대다수 리눅스 배포본은 RPM이나 DEB 파일로 배포되고 있습니다. 윈도우와 맥은 pip 명령으로 설치하면 됩니다.&lt;/p&gt;
&lt;section id="id6"&gt;
&lt;h4&gt;윈도우에 설치하기&lt;/h4&gt;
&lt;p&gt;이 글에서는 윈도우에 pipx를 설치하기 위해 Powershell을 사용합니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;PS&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Invoke-WebRequest&lt;span class="w"&gt; &lt;/span&gt;-Uri&lt;span class="w"&gt; &lt;/span&gt;https://bit.ly/4ctb7ek&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;iex
PS&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Invoke-WebRequest&lt;span class="w"&gt; &lt;/span&gt;-Uri&lt;span class="w"&gt; &lt;/span&gt;https://bit.ly/3y1qTgL&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;iex
PS&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Add-EnvPath&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$Env&lt;/span&gt;:AppData&lt;span class="se"&gt;\$&lt;/span&gt;PY_VER&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="w"&gt; &lt;/span&gt;User
PS&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;pipx
PS&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;ensurepath
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이렇게 하고 Powershell을 닫았다가 다시 시작하면 pipx 명령을 사용할 수 있습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id7"&gt;
&lt;h4&gt;맥에 설치하기&lt;/h4&gt;
&lt;p&gt;맥에서는 단순히 pipx를 설치하고 실행하면 됩니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;pipx
%&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;ensurepath
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이것으로 설치가 끝납니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id8"&gt;
&lt;h4&gt;리눅스에 설치하기 (데비안/우분투 계열 배포본)&lt;/h4&gt;
&lt;p&gt;데비안/우분투 계열의 리눅스 시스템이라면 다음 명령으로 쉽게 설치할 수 있습니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;pipx
$&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;ensurepath
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 방법의 단점은 최신의 pipx 버전이 설치되지 않는다는 것입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id9"&gt;
&lt;h4&gt;리눅스에 설치하기 (레드햇 계열 배포본)&lt;/h4&gt;
&lt;p&gt;이 방법은 레드햇 계열(Fedora, CentOS, RockyLinux 등)에 공통적으로 사용합니다.&lt;/p&gt;
&lt;p&gt;레드햇 계열 배열 배포본에서는 pipx를 설치하기 위해 epel-release 저장소를 먼저 설치해야 합니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;dnf&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;epel-release
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;dnf&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;pipx
$&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;ensurepath
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;데비안/우분투 계열과 마찬가지로 레드햇 계열 배포본에서 기본 제공되는 pipx는 과거 버전이 제공됩니다.&lt;/p&gt;
&lt;p&gt;리눅스 배포본에 설치되는 pipx 버전이 낮더라도 안심하셔도 됩니다. 리눅스의 경우 새 배포본 버전이 발표되면 pipx 버전도 업그레이드 되기 때문이기도 하지만 배포본에 제공되는 버전은 가장 안정화된 버전이 공급되기 때문입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="pipx-httpie-certbot"&gt;
&lt;h3&gt;pipx를 사용해 httpie와  certbot 설치해보기&lt;/h3&gt;
&lt;p&gt;pipx를 설치했으니 이제 pipx를 사용해 httpie나 certbot을 설치해보겠습니다. (셸 프롬프트는 편의상 $로 표기하겠습니다)&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;httpie
$&lt;span class="w"&gt; &lt;/span&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;certbot
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;pipx를 사용해 패키지 설치가 끝나면 셸에서 &lt;cite&gt;http&lt;/cite&gt; 명령과 &lt;cite&gt;certbot&lt;/cite&gt; 명령을 실행해보시길 바랍니다.&lt;/p&gt;
&lt;p&gt;pipx의 현재 단점이 하나 있는데 한 번에 하나의 명령만 설치 가능합니다. 어떤 파이썬 패키지는 콘솔 스크립트가 여러개 일수도 있는데 pipx는 이런 경우에 파이썬 패키지 파일 내부에 정의되어 있는 모든 콘솔 스크립트를 셸에서 실행할 수 있도록 해줍니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="id10"&gt;
&lt;h2&gt;마치며&lt;/h2&gt;
&lt;p&gt;pipx는 지금까지 살펴본 것처럼 파이썬 패키지 파일에 정의되어 있는 콘솔 스크립트를 우리가 셸에서 WD에 상관없이 사용할 수 있기 때문에 매우 유용합니다.&lt;/p&gt;
&lt;p&gt;파이썬 CLI 프로그램을 배포하는 새로운 방법인 pipx! 꼭 한번 사용해보시길 바랍니다.&lt;/p&gt;
&lt;p&gt;from. 파이썬 수다장이&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://titanium-haiku-594.appspot.com/blog/pipx/"/>
    <summary>파이썬으로 만들어진 프로그램을 배포한 후 실행하려면 크게 2가지 방법이 사용됩니다.</summary>
    <category term="certbot" label="certbot"/>
    <category term="httpie" label="httpie"/>
    <category term="pipenv" label="pipenv"/>
    <category term="pipx" label="pipx"/>
    <category term="poetry" label="poetry"/>
    <category term="python" label="python"/>
    <published>2024-05-08T00:00:00+09:00</published>
  </entry>
</feed>
