<?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 in Mac</title>
  <updated>2024-07-16T17:59:53.535053+00:00</updated>
  <link href="https://titanium-haiku-594.appspot.com/"/>
  <link href="https://titanium-haiku-594.appspot.com/blog/category/mac/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/python-pyenv/</id>
    <title>파이썬 버전을 관리하는 PYENV</title>
    <updated>2024-05-10T00:00:00+09:00</updated>
    <author>
      <name>search5</name>
    </author>
    <content type="html">&lt;section id="pyenv"&gt;

&lt;p&gt;파이썬 언어를 사용해 프로그램을 개발하다보면 프로그램이 배포되는 환경마다 제각기 다른 파이썬 버전을 사용하는걸 쉽게 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;이런 경우 내 컴퓨터에 설치된 파이썬 버전과 프로그램이 배포되는 서버의 파이썬 버전을 맞추는 것이 가장 좋은 해결책이지만 윈도우를 제외한 리눅스나 맥은 운영체제에 파이썬이 기본으로 배포되어 배포 환경을 생각하지 않고 개발에 임하기 쉽습니다.&lt;/p&gt;
&lt;p&gt;특히 리눅스의 경우 배포본이 최신에 가까울 수록 가장 최근에 배포된 파이썬 버전이 포함되기도 합니다. 필자의 사용하는 리눅스 &lt;a class="footnote-reference brackets" href="#f1" id="id1" role="doc-noteref"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;1&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/a&gt; 컴퓨터만 해도 파이썬은 3.10.12 버전이 배포되어 있습니다. 맥의 경우 3.9 버전이 기본으로 배포되어 있습니다.&lt;/p&gt;
&lt;p&gt;물론 윈도우는 파이썬과 파이썬으로 만든 프로그램이 사용되지 않기 때문에 파이썬이 기본으로 설치되어 있지는 않습니다.&lt;/p&gt;
&lt;p&gt;상황이 이렇다보니 프로그램이 배포될 환경과 개발하는 환경의 파이썬 버전을 맞추는 것이 무엇보다 중요해졌습니다.&lt;/p&gt;
&lt;p&gt;파이썬은 공식 &lt;a class="reference external" href="https://python.org"&gt;웹 사이트&lt;/a&gt; 에서 필요로 하는 버전을 다운로드 받을 수 있습니다. 파이썬 웹 사이트에서 배포하는 파이썬 다운로드는 기본적으로 다음의 형태로만 다운로드 받을 수 있습니다.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;소스 압축 파일 버전(gzip, xz)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;맥용 설치 버전(pkg)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;윈도우 인스톨러 버전(exe)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;윈도우 임베디드 버전(zip)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;지금 뭔가 이상한 부분을 발견하지 못하셨나요? 리눅스는 파이썬 웹 사이트에서 패키징된 파일을 제공하고 있지 않습니다. 이 때문에 리눅스에서 제공하고 있는 파이썬은 어디까지나 배포본을 만드는 사업자가 소스 코드를 다운로드 받아 컴파일해서 패키징 한것을 제공하고 있습니다.&lt;/p&gt;
&lt;p&gt;그런데 어떤 파이썬 버전은 “소스 압축 파일 버전”만 제공하고 설치 파일은 제공하지 않는 경우도 있습니다. 이런 경우 해당 파이썬 버전을 반드시 써야 한다면 파이썬을 컴파일해서 사용할 수 밖에 없습니다.&lt;/p&gt;
&lt;aside class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: INFO/1 (&lt;span class="docutils literal"&gt;/home/jiho/PycharmProjects/flypysuda/blog/python-pyenv.rst&lt;/span&gt;, line 32)&lt;/p&gt;
&lt;p&gt;No directive entry for “note” in module “docutils.parsers.rst.languages.ko”.
Using English fallback for directive “note”.&lt;/p&gt;
&lt;/aside&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;참고&lt;/p&gt;
&lt;p&gt;파이썬의 릴리즈 주기는 기본적으로 prerelease - bugfix - security - eol 단계로 구분됩니다.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;prerelease - 공식 출시 직전&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;bugfix - 공식 출시는 되었지만 파이썬에 있는 버그를 수정&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;security - 보안 기능 패치(보안 버그가 있을 때만 제공)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;eol - 더 이상 유지보수하지 않아 다운로드할 수는 있지만 쓰는 것은 권장하지 않음&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;파이썬 재단은 파이썬 출시에 있어 prerelease부터 bugfix 단계에 있는 버전들은 맥과 윈도우에서 실행 가능한 설치 파일을 제공하지만 security 단계부터는 소스 코드 압축 버전만 제공합니다.&lt;/p&gt;
&lt;/div&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;그래서 파이썬을 쉽게 컴파일하고 사용할 수 있도록 도와주는 버전 관리자가 필요합니다. 이 글에서는 파이썬 버전 관리자로 PyEnv를 다룹니다.&lt;/p&gt;
&lt;section id="id3"&gt;
&lt;h2&gt;PyEnv 설치하기&lt;/h2&gt;
&lt;p&gt;pyenv는 POSIX 표준을 따르는 리눅스와 맥에서는 별도의 pyenv installer를 사용해서 설치할 수 있고 윈도우에서는 pyenv를 설치하고 사용할 수 없습니다. 윈도우에서 사용하려면 WSL에 올라간 리눅스에 설치하거나 Git Bash 등을 사용해야 합니다. 윈도우에서의 설치 방법은 차후 다룰 기회가 있을것입니다.&lt;/p&gt;
&lt;p&gt;이 글에서 다루는 pyenv 개발 환경 구축은 맥과 데비안/우분투 계열의 리눅스 배포본에서의 설치 방법만 다룹니다.&lt;/p&gt;
&lt;p&gt;pyenv를 설치하려면 운영체제에 git, curl이 설치되어 있어야 합니다.&lt;/p&gt;
&lt;section id="id4"&gt;
&lt;h3&gt;데비안/우분투 계열 리눅스 배포본에 pyenv 설치하기&lt;/h3&gt;
&lt;p&gt;먼저 터미널 프로그램을 실행해서 셸을 시작합니다.&lt;/p&gt;
&lt;p&gt;리눅스에 curl과 git이 설치되어 있지 않을 수 있으므로 다음 명령으로 설치해줍니다.&lt;/p&gt;
&lt;div class="highlight-default notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo apt install curl git
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;curl과 git이 설치되어 있지 않으면 pyenv 설치 중 &lt;code class="code shell docutils literal notranslate"&gt;&lt;span class="pre"&gt;bash:&lt;/span&gt; &lt;span class="pre"&gt;curl:&lt;/span&gt; &lt;span class="pre"&gt;command&lt;/span&gt; &lt;span class="pre"&gt;not&lt;/span&gt; &lt;span class="pre"&gt;found&lt;/span&gt;&lt;/code&gt; 메시지 또는 &lt;code class="code shell docutils literal notranslate"&gt;&lt;span class="pre"&gt;pyenv:&lt;/span&gt; &lt;span class="pre"&gt;Git&lt;/span&gt; &lt;span class="pre"&gt;is&lt;/span&gt; &lt;span class="pre"&gt;not&lt;/span&gt; &lt;span class="pre"&gt;installed,&lt;/span&gt; &lt;span class="pre"&gt;can't&lt;/span&gt; &lt;span class="pre"&gt;continue.&lt;/span&gt;&lt;/code&gt; 와 같은 메시지가 나타나고 pyenv 설치가 중단됩니다.&lt;/p&gt;
&lt;p&gt;curl과 git을 설치했으면 pyenv 설치 명령을 입력합니다.&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;curl&lt;span class="w"&gt; &lt;/span&gt;https://pyenv.run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bash
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;그럼 잠시 뒤에 설치 프로그램이 pyenv를 Github 저장소를 복제하면서 pyenv를 시스템에 설치해줍니다. 설치가 완료되면 마지막에 다음과 같은 내용이 셸에 출력됩니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;WARNING:&lt;span class="w"&gt; &lt;/span&gt;seems&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;still&lt;span class="w"&gt; &lt;/span&gt;have&lt;span class="w"&gt; &lt;/span&gt;not&lt;span class="w"&gt; &lt;/span&gt;added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pyenv&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;load&lt;span class="w"&gt; &lt;/span&gt;path.

&lt;span class="c1"&gt;# Load pyenv automatically by appending&lt;/span&gt;
&lt;span class="c1"&gt;# the following to&lt;/span&gt;
&lt;span class="c1"&gt;# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)&lt;/span&gt;
&lt;span class="c1"&gt;# and ~/.bashrc (for interactive shells) :&lt;/span&gt;

&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PYENV_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.pyenv&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;[[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt;/bin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;init&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Restart your shell for the changes to take effect.&lt;/span&gt;

&lt;span class="c1"&gt;# Load pyenv-virtualenv automatically by adding&lt;/span&gt;
&lt;span class="c1"&gt;# the following to ~/.bashrc:&lt;/span&gt;

&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;virtualenv-init&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 메시지는 pyenv를 내랴받아 설치했으니 pyenv 명령을 어디서든 실행 가능하도록 PATH 환경 변수에 추가하고 pyenv 초기화 명령을 사용중인 셸의 설정 파일에 추가하라는 메시지입니다. 화면에 출력된 내용은 bash 셸의 설정 파일에 추가하는 내용입니다.&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;참고&lt;/p&gt;
&lt;p&gt;셸의 설정 파일은 여러분이 사용하고 있는 셸에 파일명이 다릅니다. 사용중인 셸은 &lt;code class="code shell docutils literal notranslate"&gt;&lt;span class="pre"&gt;echo&lt;/span&gt; &lt;span class="pre"&gt;$SHELL&lt;/span&gt;&lt;/code&gt; 명령으로 확인합니다. 이 명령의 실행 결과가 bash로 끝나면 셸 설정 파일명은 &lt;cite&gt;.bashrc&lt;/cite&gt; 이고, zsh로 끝나면 &lt;cite&gt;.zshrc&lt;/cite&gt; 입니다.&lt;/p&gt;
&lt;/div&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="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;export PYENV_ROOT=&amp;quot;$HOME/.pyenv&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[[ -d $PYENV_ROOT/bin ]] &amp;amp;&amp;amp; export PATH=&amp;quot;$PYENV_ROOT/bin:$PATH&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;eval &amp;quot;$(pyenv init -)&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.bashrc
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;위 코드에서는 여러분이 bash 셸을 쓴다고 가정했지만 실제 사용하는 셸에 따라 셸 설정 파일명을 바르게 입력하시길 바랍니다.&lt;/p&gt;
&lt;p&gt;이걸로 데비안/리눅스에서 pyenv 설치가 완료되었습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id5"&gt;
&lt;h3&gt;맥에 pyenv 설치하기&lt;/h3&gt;
&lt;p&gt;맥은 Xcode Command Line Tools를 설치하면 curl과 git이 설치됩니다. 다음 명령으로 Xcode Command Line Tools를 설치합니다.&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;xcode-select&lt;span class="w"&gt; &lt;/span&gt;--install
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 명령이 실행되고 나면 프로그램을 설치할것인지 물어보는 화면이 표시되면 도구 설치에 동의하고 지나가면 됩니다.&lt;/p&gt;
&lt;p&gt;이제 pyenv를 설치합니다.&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;curl&lt;span class="w"&gt; &lt;/span&gt;https://pyenv.run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bash
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;그럼 잠시 뒤에 설치 프로그램이 pyenv를 Github 저장소를 복제하면서 pyenv를 시스템에 설치해줍니다. 설치가 완료되면 마지막에 다음과 같은 내용이 셸에 출력됩니다.&lt;/p&gt;
&lt;div class="highlight-shell notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;WARNING:&lt;span class="w"&gt; &lt;/span&gt;seems&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;still&lt;span class="w"&gt; &lt;/span&gt;have&lt;span class="w"&gt; &lt;/span&gt;not&lt;span class="w"&gt; &lt;/span&gt;added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pyenv&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;load&lt;span class="w"&gt; &lt;/span&gt;path.

&lt;span class="c1"&gt;# Load pyenv automatically by appending&lt;/span&gt;
&lt;span class="c1"&gt;# the following to&lt;/span&gt;
&lt;span class="c1"&gt;# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)&lt;/span&gt;
&lt;span class="c1"&gt;# and ~/.bashrc (for interactive shells) :&lt;/span&gt;

&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PYENV_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.pyenv&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;[[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt;/bin&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;init&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Restart your shell for the changes to take effect.&lt;/span&gt;

&lt;span class="c1"&gt;# Load pyenv-virtualenv automatically by adding&lt;/span&gt;
&lt;span class="c1"&gt;# the following to ~/.bashrc:&lt;/span&gt;

&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;virtualenv-init&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;최근의 맥은 기본 셸 프로그램이 zsh 이므로 &lt;cite&gt;.zshrc&lt;/cite&gt; 파일에 pyenv 초기화 명령들을 입력합니다.&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="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;export PYENV_ROOT=&amp;quot;$HOME/.pyenv&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.zshrc
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[[ -d $PYENV_ROOT/bin ]] &amp;amp;&amp;amp; export PATH=&amp;quot;$PYENV_ROOT/bin:$PATH&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.zshrc
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;eval &amp;quot;$(pyenv init -)&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;~/.zshrc
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이제 터미널 프로그램을 다시 실행하면 pyenv를 사용할 수 있습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="id6"&gt;
&lt;h2&gt;pyenv를 사용하기&lt;/h2&gt;
&lt;p&gt;pyenv는 다양한 파이썬 버전을 설치하고 관리해주기 때문에 설치된 파이썬 버전 간의 전환 작업에 필요한 여러 명령을 알고 있어야 합니다.&lt;/p&gt;
&lt;p&gt;여기에서는 pyenv 사용에 필요한 다음의 서브 명령을 살펴보겠습니다.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;install&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;uninstall&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;shell&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;versions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;which&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;whence&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;update&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;차례대로 pyenv 서브 명령이 어떤 일을 하는지 간략히 살펴보겠습니다.&lt;/p&gt;
&lt;section id="install"&gt;
&lt;h3&gt;install&lt;/h3&gt;
&lt;p&gt;pyenv를 실행중인 사용자 계정에 파이썬 인터프리터를 설치하는 명령입니다. 이 서브 명령은 -l 옵션 인자 또는 설치하려는 파이썬 버전을 인자로 받습니다.&lt;/p&gt;
&lt;p&gt;pyenv로 설치 가능한 파이썬 인터프리터 종류는 계속 업데이트되고 있기에 여러분이 설치하려는 인터프리터 이름을 확인해두시는게 좋습니다. -l 옵션 인자를 주어 확인 가능합니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-l
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 명령의 실행 결과로 매우 긴 내용이 화면에 출력됩니다. 이 중에 가장 처음에 출력되는 것은 &lt;cite&gt;2.&lt;/cite&gt; 로 시작하는 것이 나오고 &lt;cite&gt;3.&lt;/cite&gt; 으로 시작하는 것들과 알파벳으로 시작하는 파이썬 인터프리터 이름이 나오는데 여기에서 나오는 이름이 pyenv install 명령으로 설치할 수 있는 인터프리터 이름입니다.&lt;/p&gt;
&lt;p&gt;2 또는 3으로 시작하는 숫자 버전은 C로 구현된 파이썬 버전을 말하며 python.org에서 공식적으로 배포되는 버전을 말합니다. pyenv는 공식 파이썬 버전 외에도 다양한 곳에서 배포되는 파이썬 인터프리터를 설치할 수 있으므로 여러분이 관심을 가지고 확인해보시면 좋을것 같습니다.&lt;/p&gt;
&lt;p&gt;install 서브 명령은 기본적으로 설치하려는 파이썬 버전을 정확히 적어주는 것이 명확하지만 단순히 최신 버전을 설치하려고 하면 Major 버전 또는 Major.Minor 버전을 명시하는 방법으로도 설치할 수 있습니다.&lt;/p&gt;
&lt;p&gt;예를 들어 다음과 같이 입력하는 식입니다.&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;파이썬 2.x의 최근 버전 설치하기&lt;/span&gt;&lt;/div&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="literal-block-wrapper docutils container" id="id12"&gt;
&lt;div class="code-block-caption"&gt;&lt;span class="caption-text"&gt;파이썬 3.10.x의 최근 버전 설치하기&lt;/span&gt;&lt;/div&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이렇게 명령을 입력하는 것만으로 2.7.18 또는 3.10.14 버전의 소스 코드가 다운로드 되어서 실행됩니다.&lt;/p&gt;
&lt;p&gt;install 명령은 파이썬 소스 코드를 다운로드 받아 컴파일을 진행하기 때문에 이 명령을 실행하기 전에 반드시 점검해야 하는 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;파이썬 소스 코드 컴파일러에 옵션을 제공해야 하면 PYTHON_CONFIGURE_OPTS 환경 변수를 install 서브 명령에 전달합니다.&lt;/p&gt;
&lt;p&gt;install 서브 명령에 PYTHON_CONFIGURE_OPTS 환경 변수를 전달하는 방법은 다음의 두 가지 방법을 사용할 수 있습니다.&lt;/p&gt;
&lt;div class="literal-block-wrapper docutils container" id="id13"&gt;
&lt;div class="code-block-caption"&gt;&lt;span class="caption-text"&gt;셸의 환경 변수로 만들면 pyenv가 환경 변수를 인식합니다.&lt;/span&gt;&lt;/div&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;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;PYTHON_CONFIGURE_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--enable-shared
$&lt;span class="w"&gt; &lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="literal-block-wrapper docutils container" id="id14"&gt;
&lt;div class="code-block-caption"&gt;&lt;span class="caption-text"&gt;pyenv install 서브 명령을 실행하기 전에 가장 앞에 셸 환경 변수를 선언합니다.&lt;/span&gt;&lt;/div&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;&lt;span class="nv"&gt;PYTHON_CONFIGURE_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--enable-shared&lt;span class="w"&gt; &lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 두 가지 방법 중에 어떤 방법을 사용해도 좋지만 필자는 인라인 방식으로 pyenv install 명령이 실행되는 동안에만 일시적으로 환경 변수가 살아있는 두 번째 방법을 선호합니다.&lt;/p&gt;
&lt;p&gt;PYTHON_CONFIGURE_OPTS 환경 변수에 제공한 값은 pyenv가 파이썬 소스 컴파일을 하기 위해 내부적으로 실행하는 configure 스크립트에 인자로 전달됩니다.&lt;/p&gt;
&lt;p&gt;여러분은 이 중에 편한 방식으로 사용하시면 됩니다.&lt;/p&gt;
&lt;p&gt;운영체제 별로 파이썬 컴파일에 필요한 라이브러리 설치 방법이 달라지며 실제 설치는 뒤에서 다루겠습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="uninstall"&gt;
&lt;h3&gt;uninstall&lt;/h3&gt;
&lt;p&gt;uninstall 서브 명령은 pyenv install 서브 명령을 사용해 설치된 파이썬 버전을 지우는데 사용합니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;uninstall&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;unintall 서브 명령에 전달하는 인자는 install 명령에 사용했던것과 동일해야 합니다. 설치되지 않은 것은 지울 수 없기 때문입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="shell"&gt;
&lt;h3&gt;shell&lt;/h3&gt;
&lt;p&gt;shell 서브 명령은 현재 사용중인 셸에서 실행할 파이썬 버전을 변경하는데 사용합니다. shell 서브 명령에 전달하는 인자는 install 서브 명령으로 설치된 파이썬 인터프리터 이름 입니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;shell&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;shell 서브 명령이 사용되고 나면 python 명령이나 pip 등의 명령은 shell 서브 명령에 전달한 파이썬 인터프리터 경로의 명령이 실행됩니다.&lt;/p&gt;
&lt;p&gt;단, shell 명령으로 변경된 파이썬 인터프리터는 셸이 동작하고 있는 터미널이 종료되면 해제됩니다. 이 글에서 다루진 않지만 셸이 종료되어도 특정 파이썬 인터프리터 버전을 유지하려면 local 서브 명령을 사용하면 됩니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="version"&gt;
&lt;h3&gt;version&lt;/h3&gt;
&lt;p&gt;version 서브 명령은 현재 셸에서 사용중인 파이썬 인터프리터 버전이 무엇인지 확인하는데 사용합니다. 다른 명령들과 이 명령은 인자를 받지 않습니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;version
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;local 서브 명령이나 global 서브 명령 등이 사용되지 않았다면 터미널을 다시 실행했다면 system이 나올 것입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="versions"&gt;
&lt;h3&gt;versions&lt;/h3&gt;
&lt;p&gt;versions 서브 명령은 pyenv install 명령을 사용해 설치된 모든 파이썬 인터프리터 목록을 보는데 사용합니다. pyenv가 파이썬 가상 환경도 관리할 수 있기 때문에 pyenv로 가상 환경도 만들었다면 versions 서브 명령이 실행됐을 때 파이썬 가상 환경도 이름도 보여지게 됩니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;versions
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;versions 서브 명령도 실행할 때 인자를 전달받지 않습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="which"&gt;
&lt;h3&gt;which&lt;/h3&gt;
&lt;p&gt;which 서브 명령은 실행 인자를 받아 실행 인자로 주어진 명령이 실제 위치를 반환합니다. 예를 들어 shell 서브 명령에 실행 인자로 3.10.14를 주어 셸의 파이썬 환경을 바꿔줍니다. 그 다음 셸에서 python 명령을 입력했을 때 해당 명령이 어디에 있는지 찾으려면 다음과 같이 명령하면 됩니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;which&lt;span class="w"&gt; &lt;/span&gt;python
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 명령의 실행 결과는 &lt;code class="code shell docutils literal notranslate"&gt;&lt;span class="pre"&gt;/home/jiho/.pyenv/versions/3.10.14/bin/python&lt;/span&gt;&lt;/code&gt; 와 비슷한 형태로 표시됩니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="whence"&gt;
&lt;h3&gt;whence&lt;/h3&gt;
&lt;p&gt;whence 서브 명령은 인자로 주어진 실행 파일의 이름이 pyenv 환경에 설치된 파이썬 환경 중에 어디에 설치되어 있는지 확인하기 위해 사용합니다. 예를 들어 3.10.13버전과 3.11.4 버전에 http 명령이 있고 3.9.8 버전에는 http 명령이 없는 상태에서 다음과 같이 명령을 입력하면 화면에는 3.10.13과 3.11.4만 나오게 됩니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;whence&lt;span class="w"&gt; &lt;/span&gt;http
&lt;span class="m"&gt;3&lt;/span&gt;.10.13
&lt;span class="m"&gt;3&lt;/span&gt;.11.4
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;특정 파이썬 환경에만 설치한 명령이 있는 경우 whence 서브 명령을 사용하면 pyenv로 설치한 파이썬 환경을 순회하면서 찾지 않아도 됩니다. 필자가 이 기능을 알았다면 좋았을 기능입니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="update"&gt;
&lt;h3&gt;update&lt;/h3&gt;
&lt;p&gt;update 서브 명령은 pyenv 자체를 업데이트 하는데 사용하는 명령이며 실행 인자를 받지 않습니다. pyenv는 설치되는 시점에 pyenv로 설치 가능한 파이썬 버전 정보가 디스크에 파일로 남기 때문에 pyenv를 업데이트 하지 않으면 새로 나온 파이썬 버전이 있을 경우 설치할 수 없습니다.&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;pyenv&lt;span class="w"&gt; &lt;/span&gt;update
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;update 서브 명령은 자주 실행하지 않아도 되며 새로 나온 버전의 파이썬 인터프리터를 설치할 때만 사용하면 됩니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="id7"&gt;
&lt;h2&gt;pyenv로 파이썬 설치하기&lt;/h2&gt;
&lt;p&gt;이제 본격적으로 pyenv로 파이썬을 설치해볼 차례입니다. 필자는 가능한 한 4개 정도의 마이너 파이썬 버전을 시스템에 설치해두길 권장합니다. 예를 들면 3.9부터 3.12까지 설치하는 것입니다. 이렇게 파이썬 버전을 여러개 설치하는 것을 권장하는건 개발중인 파이썬 프로그램이 사용하는 라이브러리 일부는 특정 마이너 버전이나 특정 패치 버전 이상을 요구하는 경우가 있기 때문입니다.&lt;/p&gt;
&lt;p&gt;보통은 패치 버전까지는 라이브러리에서 가리지 않지만 마이너 버전까지는 일부 라이브러리가 설치 조건 등의 일부로 사용하기에 여러분도 이런 점을 감안하여 파이썬 인터프리터 버전을 설치해두시길 권장합니다.&lt;/p&gt;
&lt;section id="id8"&gt;
&lt;h3&gt;데비안/우분투 계열 배포본에서 pyenv로 파이썬 설치하기&lt;/h3&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;libbz2-dev&lt;span class="w"&gt; &lt;/span&gt;libncurses-dev&lt;span class="w"&gt; &lt;/span&gt;libreadline-dev&lt;span class="w"&gt; &lt;/span&gt;libsqlite3-dev&lt;span class="w"&gt; &lt;/span&gt;liblzma-dev&lt;span class="w"&gt; &lt;/span&gt;tk-dev&lt;span class="w"&gt; &lt;/span&gt;libffi-dev&lt;span class="w"&gt; &lt;/span&gt;libssl-dev
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;이 다음엔 install 서브 명령으로 원하는 파이썬 버전을 설치하면 됩니다.&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;&lt;span class="nv"&gt;PYTHON_CONFIGURE_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--enable-shared&lt;span class="w"&gt; &lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;필자는 pyenv로 파이썬을 컴파일 할 때는 항상 PYTHON_CONFIGURE_OPTS 환경 변수에 &lt;cite&gt;–enable-shared&lt;/cite&gt; 값을 주는데 이 값은 설치하는 파이썬이 공유 라이브러리 모드로 컴파일되도록 합니다. 일부 파이썬 라이브러리는 파이썬이 공유 라이브러리 모드로 컴파일 되지 않으면 동작되지 않는 경우가 있기 때문입니다.&lt;/p&gt;
&lt;p&gt;이제 잠시 기다리면 파이썬 컴파일이 완료됩니다. 파이썬은 설치했으니 다음엔 shell 서브 명령을 사용해 파이썬 인터프리터 버전을 지정하면 됩니다.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="id9"&gt;
&lt;h3&gt;맥에서 pyenv로 파이썬 설치하기&lt;/h3&gt;
&lt;p&gt;맥의 경우 파이썬 컴파일에 필요한 라이브러리는 homebrew를 사용해 설치하는 것이 권장됩니다. homebrew를 설치하는 방법은 이 글에서 다루지 않으니 다른 문서를 참고해주세요.&lt;/p&gt;
&lt;p&gt;homebrew가 설치되어 있다면 다음 명령으로 파이썬 컴파일에 필요한 라이브러리를 설치합니다.&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;brew&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;bzip2&lt;span class="w"&gt;  &lt;/span&gt;ncurses&lt;span class="w"&gt; &lt;/span&gt;readline&lt;span class="w"&gt; &lt;/span&gt;sqlite&lt;span class="w"&gt; &lt;/span&gt;xz&lt;span class="w"&gt; &lt;/span&gt;openssl@3
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;brew로 라이브러리를 설치하는 것은 조금 시간이 소요될 수 있으므로 느긋하게 기다리시길 바랍니다. brew로 라이브러리 설치가 완료되면 install 서브 명령으로 파이썬을 설치할 차례입니다.&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;&lt;span class="nv"&gt;PYTHON_CONFIGURE_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;--enable-shared&lt;span class="w"&gt; &lt;/span&gt;pyenv&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.10
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;파이썬 설치 명령은 리눅스와 동일하며 인자로 PYTHON_CONFIGURE_OPTS 환경 변수의 인자로 전달하는 것도 같으므로 이 부분은 가능한 꼭 기억해서 쓰시면 좋습니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="id10"&gt;
&lt;h2&gt;마치며&lt;/h2&gt;
&lt;p&gt;이것으로 파이썬 버전을 쉽게 관리하고 쉽게 사용할 수 있게 하는 pyenv에 대한 소개를 마칩니다. 나머지 기능은 여러분이 직접 실습하면서 확인해보시길 바랍니다.&lt;/p&gt;
&lt;p&gt;from. 파이썬 수다장이&lt;/p&gt;
&lt;p class="rubric"&gt;각주&lt;/p&gt;
&lt;aside class="footnote-list brackets"&gt;
&lt;aside class="footnote brackets" id="f1" role="doc-footnote"&gt;
&lt;span class="label"&gt;&lt;span class="fn-bracket"&gt;[&lt;/span&gt;&lt;a role="doc-backlink" href="#id1"&gt;1&lt;/a&gt;&lt;span class="fn-bracket"&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;필자는 우분투 22.04에 기반한 리눅스 배포본을 사용하고 있습니다.&lt;/p&gt;
&lt;/aside&gt;
&lt;/aside&gt;
&lt;/section&gt;
&lt;/section&gt;
</content>
    <link href="https://titanium-haiku-594.appspot.com/blog/python-pyenv/"/>
    <summary>파이썬 언어를 사용해 프로그램을 개발하다보면 프로그램이 배포되는 환경마다 제각기 다른 파이썬 버전을 사용하는걸 쉽게 볼 수 있습니다.이런 경우 내 컴퓨터에 설치된 파이썬 버전과 프로그램이 배포되는 서버의 파이썬 버전을 맞추는 것이 가장 좋은 해결책이지만 윈도우를 제외한 리눅스나 맥은 운영체제에 파이썬이 기본으로 배포되어 배포 환경을 생각하지 않고 개발에 임하기 쉽습니다.특히 리눅스의 경우 배포본이 최신에 가까울 수록 가장 최근에 배포된 파이썬 버전이 포함되기도 합니다. 필자의 사용하는 리눅스 1 컴퓨터만 해도 파이썬은 3.10.12 버전이 배포되어 있습니다. 맥의 경우 3.9 버전이 기본으로 배포되어 있습니다.</summary>
    <category term="pyenv" label="pyenv"/>
    <category term="python" label="python"/>
    <published>2024-05-10T00:00:00+09:00</published>
  </entry>
  <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>
