### ํค์คํค ์คํฐ์ { #keystone-sponsor }
+<div class="fastapi-sponsors fastapi-sponsors--keystone">
{% for sponsor in sponsors.keystone -%}
-<a href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
+<a class="fastapi-sponsors__card fastapi-sponsors__card--keystone" href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img class="fastapi-sponsors__banner" src="{{ sponsor.img }}" alt="{{ sponsor.title }}"></a>
{% endfor -%}
+</div>
-### ๊ณจ๋ ๋ฐ ์ค๋ฒ ์คํฐ์ { #gold-and-silver-sponsors }
+### ๊ณจ๋ ์คํฐ์ { #gold-sponsors }
+<div class="fastapi-sponsors fastapi-sponsors--gold">
{% for sponsor in sponsors.gold -%}
-<a href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
+<a class="fastapi-sponsors__card fastapi-sponsors__card--gold" href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img class="fastapi-sponsors__banner" src="{{ sponsor.img }}" alt="{{ sponsor.title }}" loading="lazy"></a>
{% endfor -%}
-{%- for sponsor in sponsors.silver -%}
-<a href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
+</div>
+
+### ์ค๋ฒ ์คํฐ์ { #silver-sponsors }
+
+<div class="fastapi-sponsors fastapi-sponsors--silver">
+{% for sponsor in sponsors.silver -%}
+<a class="fastapi-sponsors__card fastapi-sponsors__card--silver" href="{{ sponsor.url }}" title="{{ sponsor.title }}"><img class="fastapi-sponsors__banner" src="{{ sponsor.img }}" alt="{{ sponsor.title }}" loading="lazy"></a>
{% endfor %}
+</div>
<!-- /sponsors -->
## ์๊ฒฌ๋ค { #opinions }
-"_[...] ์ ๋ ์์ฆ **FastAPI**๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. [...] ์ฌ์ค ์ฐ๋ฆฌ ํ์ **๋ง์ดํฌ๋ก์ํํธ ML ์๋น์ค** ์ ๋ถ๋ฅผ ๋ฐ๊ฟ ๊ณํ์
๋๋ค. ๊ทธ์ค ์ผ๋ถ๋ ํต์ฌ **Windows**์ ๋ช๋ช์ **Office** ์ ํ๋ค์ด ํตํฉ๋๊ณ ์์ต๋๋ค._"
+<!-- only-mkdocs -->
+<div class="fastapi-opinions" data-fastapi-opinions>
+ <div class="fastapi-opinions__tabs" role="tablist" aria-label="Companies using FastAPI">
+ <button class="fastapi-opinions__tab" role="tab" type="button" id="fo-tab-microsoft" aria-controls="fo-panel-microsoft" aria-selected="true" tabindex="0">
+ <span class="fastapi-opinions__mark"><img src="/img/logos/microsoft.svg" alt="Microsoft" loading="lazy"></span>
+ </button>
+ <button class="fastapi-opinions__tab" role="tab" type="button" id="fo-tab-uber" aria-controls="fo-panel-uber" aria-selected="false" tabindex="-1">
+ <span class="fastapi-opinions__mark"><img src="/img/logos/uber.svg" alt="Uber" loading="lazy"></span>
+ </button>
+ <button class="fastapi-opinions__tab" role="tab" type="button" id="fo-tab-netflix" aria-controls="fo-panel-netflix" aria-selected="false" tabindex="-1">
+ <span class="fastapi-opinions__mark"><img src="/img/logos/netflix.svg" alt="Netflix" loading="lazy"></span>
+ </button>
+ <button class="fastapi-opinions__tab" role="tab" type="button" id="fo-tab-cisco" aria-controls="fo-panel-cisco" aria-selected="false" tabindex="-1">
+ <span class="fastapi-opinions__mark"><img src="/img/logos/cisco.svg" alt="Cisco" loading="lazy"></span>
+ </button>
+ </div>
+
+ <div class="fastapi-opinions__panel" id="fo-panel-microsoft" role="tabpanel" aria-labelledby="fo-tab-microsoft" tabindex="0">
+ <blockquote class="fastapi-opinions__quote">"์ ๋ ์์ฆ <strong>FastAPI</strong>๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ ๋ชจ๋ <strong>๋ง์ดํฌ๋ก์ํํธ ML ์๋น์ค</strong>์ ์ฌ์ฉํ ๊ณํ์
๋๋ค. ๊ทธ์ค ์ผ๋ถ๋ ํต์ฌ <strong>Windows</strong> ์ ํ๊ณผ ์ผ๋ถ <strong>Office</strong> ์ ํ์ ํตํฉ๋๊ณ ์์ต๋๋ค."</blockquote>
+ <div class="fastapi-opinions__attr">โ Kabir Khan, <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26">(ref)</a></div>
+ </div>
+ <div class="fastapi-opinions__panel" id="fo-panel-uber" role="tabpanel" aria-labelledby="fo-tab-uber" tabindex="0" hidden>
+ <blockquote class="fastapi-opinions__quote">"์ฐ๋ฆฌ๋ <strong>FastAPI</strong> ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํด <strong>์์ธก</strong>์ ์ป๊ธฐ ์ํด ์ฟผ๋ฆฌํ ์ ์๋ <strong>REST</strong> ์๋ฒ๋ฅผ ์์ฑํ์ต๋๋ค." <em>[Ludwig์ ์ํด]</em></blockquote>
+ <div class="fastapi-opinions__attr">โ Piero Molino, Yaroslav Dudin, Sai Sumanth Miryala, <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/">(ref)</a></div>
+ </div>
+ <div class="fastapi-opinions__panel" id="fo-panel-netflix" role="tabpanel" aria-labelledby="fo-tab-netflix" tabindex="0" hidden>
+ <blockquote class="fastapi-opinions__quote">"<strong>Netflix</strong>๋ ์ฐ๋ฆฌ์ <strong>์๊ธฐ ๊ด๋ฆฌ</strong> ์ค์ผ์คํธ๋ ์ด์
ํ๋ ์์ํฌ์ธ <strong>Dispatch</strong>์ ์คํ ์์ค ๊ณต๊ฐ๋ฅผ ๋ฐํํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค!" <em>[FastAPI๋ก ๋น๋]</em></blockquote>
+ <div class="fastapi-opinions__attr">โ Kevin Glisson, Marc Vilanova, Forest Monsen, <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072">(ref)</a></div>
+ </div>
+ <div class="fastapi-opinions__panel" id="fo-panel-cisco" role="tabpanel" aria-labelledby="fo-tab-cisco" tabindex="0" hidden>
+ <blockquote class="fastapi-opinions__quote">"ํ๋ก๋์
Python API๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด, ์ ๋ <strong>FastAPI</strong>๋ฅผ ๊ฐ๋ ฅํ ์ถ์ฒํฉ๋๋ค. <strong>์๋ฆ๋ต๊ฒ ์ค๊ณ</strong>๋์๊ณ , <strong>์ฌ์ฉ์ด ๊ฐ๋จ</strong>ํ๋ฉฐ, <strong>ํ์ฅ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋ฉ๋๋ค</strong> โ ์ฐ๋ฆฌ์ API ์ฐ์ ๊ฐ๋ฐ ์ ๋ต์์ <strong>ํต์ฌ ๊ตฌ์ฑ ์์</strong>๊ฐ ๋์์ต๋๋ค."</blockquote>
+ <div class="fastapi-opinions__attr">โ Deon Pillsbury, <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/">(ref)</a></div>
+ </div>
+</div>
+<!-- /only-mkdocs -->
-<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>๋ง์ดํฌ๋ก์ํํธ</strong> <a href="https://github.com/fastapi/fastapi/pull/26"><small>(ref)</small></a></div>
+<div class="only-github" markdown="1">
----
-
-"_**FastAPI** ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ์ฌ **์์ธก**์ ์ป๊ธฐ ์ํด ์ฟผ๋ฆฌ๋ฅผ ์คํ ํ ์ ์๋ **REST** ์๋ฒ๋ฅผ ์์ฑํ์ต๋๋ค. [Ludwig์ ์ํด]_"
+"_[...] ์ ๋ ์์ฆ **FastAPI**๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. [...] ์ฌ์ค ์ฐ๋ฆฌ ํ์ **๋ง์ดํฌ๋ก์ํํธ ML ์๋น์ค** ์ ๋ถ๋ฅผ ๋ฐ๊ฟ ๊ณํ์
๋๋ค. ๊ทธ์ค ์ผ๋ถ๋ ํต์ฌ **Windows**์ ๋ช๋ช์ **Office** ์ ํ๋ค์ด ํตํฉ๋๊ณ ์์ต๋๋ค._"
-<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin ๊ทธ๋ฆฌ๊ณ Sai Sumanth Miryala - <strong>์ฐ๋ฒ</strong> <a href="https://eng.uber.com/ludwig-v0-2/"><small>(ref)</small></a></div>
+<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26"><small>(ref)</small></a></div>
---
-"_**Netflix**๋ ์ฐ๋ฆฌ์ ์คํ ์์ค ๋ฐฐํฌํ์ธ **์๊ธฐ ๊ด๋ฆฌ** ์ค์ผ์คํธ๋ ์ด์
ํ๋ ์์ํฌ๋ฅผ ๋ฐํํ ์ ์์ด ๊ธฐ์ฉ๋๋ค: ๋ฐ๋ก **Dispatch**์
๋๋ค! [**FastAPI**๋ก ๋น๋]_"
+"_**FastAPI** ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ์ฌ **์์ธก**์ ์ป๊ธฐ ์ํด ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๋ **REST** ์๋ฒ๋ฅผ ์์ฑํ์ต๋๋ค. [Ludwig์ ์ํด]_"
-<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>๋ทํ๋ฆญ์ค</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072"><small>(ref)</small></a></div>
+<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/"><small>(ref)</small></a></div>
---
-"_**FastAPI**๊ฐ ๋๋ฌด ์ข์์ ๊ตฌ๋ฆ ์๋ฅผ ๊ฑท๋๋ฏ ํฉ๋๋ค. ์ ๋ง ์ฆ๊ฒ์ต๋๋ค!_"
+"_**Netflix**๋ ์ฐ๋ฆฌ์ ์คํ ์์ค ๋ฐฐํฌํ์ธ **์๊ธฐ ๊ด๋ฆฌ** ์ค์ผ์คํธ๋ ์ด์
ํ๋ ์์ํฌ๋ฅผ ๋ฐํํ ์ ์์ด ๊ธฐ์ฉ๋๋ค: ๋ฐ๋ก **Dispatch**์
๋๋ค! [**FastAPI**๋ก ๋น๋]_"
-<div style="text-align: right; margin-right: 10%;">Brian Okken - <strong>[Python Bytes](https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855) podcast host</strong> <a href="https://x.com/brianokken/status/1112220079972728832"><small>(ref)</small></a></div>
+<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072"><small>(ref)</small></a></div>
---
-"_์์งํ, ๋น์ ์ด ๋ง๋ ๊ฒ์ ๋งค์ฐ ๊ฒฌ๊ณ ํ๊ณ ์ธ๋ จ๋์ด ๋ณด์
๋๋ค. ์ฌ๋ฌ ๋ฉด์์ **Hug**๊ฐ ์ด๋ ๊ฒ ๋์์ผ๋ฉด ํฉ๋๋ค - ๊ทธ๊ฑธ ๋ง๋ ๋๊ตฐ๊ฐ๋ฅผ ๋ณด๋ ๊ฒ์ ๋ง์ ์๊ฐ์ ์ค๋๋ค._"
+"_ํ๋ก๋์
Python API๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด, ์ ๋ **FastAPI**๋ฅผ ๊ฐ๋ ฅํ ์ถ์ฒํฉ๋๋ค. **์๋ฆ๋ต๊ฒ ์ค๊ณ**๋์๊ณ , **์ฌ์ฉ์ด ๊ฐ๋จ**ํ๋ฉฐ, **ํ์ฅ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋** ์ฐ๋ฆฌ์ API ์ฐ์ ๊ฐ๋ฐ ์ ๋ต์์ **ํต์ฌ ๊ตฌ์ฑ ์์**๊ฐ ๋์์ต๋๋ค._"
-<div style="text-align: right; margin-right: 10%;">Timothy Crosley - <strong>[Hug](https://github.com/hugapi/hug) ์ ์์</strong> <a href="https://news.ycombinator.com/item?id=19455465"><small>(ref)</small></a></div>
+<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(ref)</small></a></div>
---
-"_REST API๋ฅผ ๋ง๋ค๊ธฐ ์ํด **ํ๋์ ์ธ ํ๋ ์์ํฌ**๋ฅผ ์ฐพ๊ณ ์๋ค๋ฉด **FastAPI**๋ฅผ ํ์ธํด ๋ณด์ญ์์ค. [...] ๋น ๋ฅด๊ณ , ์ฐ๊ธฐ ์ฝ๊ณ , ๋ฐฐ์ฐ๊ธฐ๋ ์ฝ์ต๋๋ค [...]_"
-
-"_์ฐ๋ฆฌ **API**๋ฅผ **FastAPI**๋ก ๋ฐ๊ฟจ์ต๋๋ค [...] ์๋ง ์ฌ๋ฌ๋ถ๋ ์ข์ํ์ค ๊ฒ์
๋๋ค [...]_"
-
-<div style="text-align: right; margin-right: 10%;">Ines Montani - Matthew Honnibal - <strong>[Explosion AI](https://explosion.ai) ์ค๋ฆฝ์ - [spaCy](https://spacy.io) ์ ์์</strong> <a href="https://x.com/_inesmontani/status/1144173225322143744"><small>(ref)</small></a> - <a href="https://x.com/honnibal/status/1144031421859655680"><small>(ref)</small></a></div>
+</div>
----
+## FastAPI Conf { #fastapi-conf }
-"_ํ๋ก๋์
Python API๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด, ์ ๋ **FastAPI**๋ฅผ ๊ฐ๋ ฅํ ์ถ์ฒํฉ๋๋ค. **์๋ฆ๋ต๊ฒ ์ค๊ณ**๋์๊ณ , **์ฌ์ฉ์ด ๊ฐ๋จ**ํ๋ฉฐ, **ํ์ฅ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋**๊ณ , ์ฐ๋ฆฌ์ API ์ฐ์ ๊ฐ๋ฐ ์ ๋ต์์ **ํต์ฌ ๊ตฌ์ฑ ์์**๊ฐ ๋์์ผ๋ฉฐ Virtual TAC Engineer ๊ฐ์ ๋ง์ ์๋ํ์ ์๋น์ค๋ฅผ ์ด๋๊ณ ์์ต๋๋ค._"
+[**FastAPI Conf '26**](https://fastapiconf.com)์ **2026๋
10์ 28์ผ**, **๋ค๋๋๋ ์์คํ
๋ฅด๋ด**์์ ์ด๋ฆฝ๋๋ค. FastAPI์ ๊ดํ ๋ชจ๋ ๊ฒ, ๋ฐ๋ก ์ถ์ฒ์์. ๐ค
-<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(ref)</small></a></div>
-
----
+<a class="fastapi-feature-banner" href="https://fastapiconf.com"><img src="https://fastapi.tiangolo.com/img/fastapi-conf.jpeg" alt="FastAPI Conf '26 - October 28, 2026 - Amsterdam, NL"></a>
## FastAPI ๋ฏธ๋ ๋คํ๋ฉํฐ๋ฆฌ { #fastapi-mini-documentary }
2025๋
๋ง์ ๊ณต๊ฐ๋ [FastAPI ๋ฏธ๋ ๋คํ๋ฉํฐ๋ฆฌ](https://www.youtube.com/watch?v=mpR8ngthqiE)๊ฐ ์์ต๋๋ค. ์จ๋ผ์ธ์์ ์์ฒญํ ์ ์์ต๋๋ค:
-<a href="https://www.youtube.com/watch?v=mpR8ngthqiE"><img src="https://fastapi.tiangolo.com/img/fastapi-documentary.jpg" alt="FastAPI Mini Documentary"></a>
+<a class="fastapi-feature-banner" href="https://www.youtube.com/watch?v=mpR8ngthqiE"><img src="https://fastapi.tiangolo.com/img/fastapi-documentary.jpg" alt="FastAPI Mini Documentary"></a>
## **Typer**, CLI๋ฅผ ์ํ FastAPI { #typer-the-fastapi-of-clis }
Python ํ๋ก์ ํธ๋ฅผ ์์
ํ ๋๋ **๊ฐ์ ํ๊ฒฝ**(๋๋ ์ด์ ์ ์ฌํ ๋ฉ์ปค๋์ฆ)์ ์ฌ์ฉํด ๊ฐ ํ๋ก์ ํธ๋ง๋ค ์ค์นํ๋ ํจํค์ง๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
-/// info
+/// note | ์ฐธ๊ณ
์ด๋ฏธ ๊ฐ์ ํ๊ฒฝ์ ๋ํด ์๊ณ ์๊ณ , ์ด๋ป๊ฒ ์์ฑํ๊ณ ์ฌ์ฉํ๋์ง๋ ์๊ณ ์๋ค๋ฉด, ์ด ์น์
์ ๊ฑด๋๋ฐ์ด๋ ๊ด์ฐฎ์ต๋๋ค. ๐ค
///
-/// tip
+/// tip | ํ
**๊ฐ์ ํ๊ฒฝ**์ **ํ๊ฒฝ ๋ณ์**์ ๋ค๋ฆ
๋๋ค.
///
-/// info
+/// note | ์ฐธ๊ณ
์ด ํ์ด์ง์์๋ **๊ฐ์ ํ๊ฒฝ**์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ์์ ์๋ ค๋๋ฆฝ๋๋ค.
Python ํ๋ก์ ํธ๋ฅผ **์ฒ์ ์์ํ ๋**, ๊ฐ์ ํ๊ฒฝ์ **<dfn title="๋ค๋ฅธ ์ต์
๋ ์์ง๋ง, ์ด๊ฒ์ ๊ฐ๋จํ ๊ฐ์ด๋๋ผ์ธ์
๋๋ค">ํ๋ก์ ํธ ๋ด๋ถ</dfn>**์ ์์ฑํ์ธ์.
-/// tip
+/// tip | ํ
์ด ์์
์ **ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง** ํ๋ฉด ๋๋ฉฐ, ์์
ํ ๋๋ง๋ค ํ ํ์๋ ์์ต๋๋ค.
</div>
-/// tip
+/// tip | ํ
๊ธฐ๋ณธ์ ์ผ๋ก `uv`๋ `.venv`๋ผ๋ ๋๋ ํฐ๋ฆฌ์ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํฉ๋๋ค.
์ดํ ์คํํ๋ Python ๋ช
๋ น์ด์ ์ค์นํ๋ ํจํค์ง๊ฐ ์ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๋๋ก, ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ์ธ์.
-/// tip
+/// tip | ํ
ํ๋ก์ ํธ ์์
์ ์ํด **์ ํฐ๋ฏธ๋ ์ธ์
**์ ์์ํ ๋๋ง๋ค **๋งค๋ฒ** ์ด ์์
์ ํ์ธ์.
////
-/// tip
+/// tip | ํ
ํด๋น ํ๊ฒฝ์ **์ ํจํค์ง**๋ฅผ ์ค์นํ ๋๋ง๋ค, ํ๊ฒฝ์ ๋ค์ **ํ์ฑํ**ํ์ธ์.
๊ฐ์ ํ๊ฒฝ์ด ํ์ฑํ๋์ด ์๋์ง(์ด์ ๋ช
๋ น์ด๊ฐ ์๋ํ๋์ง) ํ์ธํฉ๋๋ค.
-/// tip
+/// tip | ํ
์ด ๋จ๊ณ๋ **์ ํ ์ฌํญ**์ด์ง๋ง, ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๊ณ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์๋ํ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์๋์ง **ํ์ธ**ํ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
## `pip` ์
๊ทธ๋ ์ด๋ { #upgrade-pip }
-/// tip
+/// tip | ํ
[`uv`](https://github.com/astral-sh/uv)๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, `pip` ๋์ `uv`๋ก ์ค์นํ๊ฒ ๋๋ฏ๋ก `pip`์ ์
๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์์ต๋๋ค. ๐
ํจํค์ง ์ค์น ์ค ๋ฐ์ํ๋ ๋ค์ํ ํน์ดํ ์ค๋ฅ๋ ๋จผ์ `pip`๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ง์ผ๋ก ํด๊ฒฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
-/// tip
+/// tip | ํ
๋ณดํต ์ด ์์
์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
</div>
-/// tip
+/// tip | ํ
๋๋ก๋ pip๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ค๊ณ ํ ๋ **`No module named pip`** ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
**Git**์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด(์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค), `.venv`์ ๋ชจ๋ ๋ด์ฉ์ Git์์ ์ ์ธํ๋๋ก `.gitignore` ํ์ผ์ ์ถ๊ฐํ์ธ์.
-/// tip
+/// tip | ํ
[`uv`](https://github.com/astral-sh/uv)๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์๋ค๋ฉด, ์ด๋ฏธ ์๋์ผ๋ก ์ฒ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ์ด ๋จ๊ณ๋ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค. ๐
///
-/// tip
+/// tip | ํ
๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
ํ๊ฒฝ์ ํ์ฑํํ ๋ค, ๊ทธ ์์ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
-/// tip
+/// tip | ํ
ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋ ์
๊ทธ๋ ์ด๋ํ ๋๋ **ํ ๋ฒ**๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ธํ๊ฒ ์์
์ค์ด๊ณ ํ๋ก์ ํธ์ ํจํค์ง ์๊ตฌ์ฌํญ์ ์ ์ธํ๋ ํ์ผ์ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด, ํจํค์ง๋ฅผ ์ง์ ์ค์นํ ์ ์์ต๋๋ค.
-/// tip
+/// tip | ํ
ํ๋ก๊ทธ๋จ์ ํ์ํ ํจํค์ง์ ๋ฒ์ ์ ํ์ผ(์: `requirements.txt` ๋๋ `pyproject.toml`)์ ์ ์ด๋๋ ๊ฒ์ (๋งค์ฐ) ์ข์ ์๊ฐ์
๋๋ค.
* [VS Code](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment)
* [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html)
-/// tip
+/// tip | ํ
๋ณดํต ์ด ์ค์ ์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ๋ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
-/// tip
+/// tip | ํ
์์ ๋ด์ฉ์ด ๋ฌด์์ธ์ง ๋ ์ดํดํ๊ณ ์ถ์ผ์ ๊ฐ์?
end
```
-/// tip
+/// tip | ํ
Python ํจํค์ง์์๋ **์ ๋ฒ์ **์์ **ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณ๊ฒฝ(breaking changes)**์ **ํผํ๋ ค๊ณ ** ์ต์ ์ ๋คํ๋ ๊ฒ์ด ๋งค์ฐ ์ผ๋ฐ์ ์ด์ง๋ง, ์์ ์ ์ํด ๋ ์ต์ ๋ฒ์ ์ ์๋์ ์ผ๋ก ์ค์นํ๊ณ , ํ
์คํธ๋ฅผ ์คํํด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ ๋ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ ๋ณ์ ์ค ํ๋๊ฐ `PATH` ๋ณ์์
๋๋ค.
-/// tip
+/// tip | ํ
`PATH` ํ๊ฒฝ ๋ณ์์ ๋ํด ๋ ์์๋ณด๋ ค๋ฉด [ํ๊ฒฝ ๋ณ์](environment-variables.md#path-environment-variable) ์น์
์ ์ฐธ๊ณ ํ์ธ์.
๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ํ๊ฒฝ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
-/// tip
+/// tip | ํ
๊ฐ์ ํ๊ฒฝ์ ํ๋ ํ์ฑํํด์ Python์ ์ฌ์ฉํ ๋ค์, **๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ด๋**ํ๊ธฐ ์ฝ์ต๋๋ค.
</div>
-ํ์ง๋ง ๊ฐ์ ํ๊ฒฝ์ ๋นํ์ฑํํ๊ณ `prisoner-of-askaban`์ ๋ํ ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ฉด, `python`์ ์คํํ ๋ `prisoner-of-azkaban`์ ๊ฐ์ ํ๊ฒฝ์ ์๋ Python์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
+ํ์ง๋ง ๊ฐ์ ํ๊ฒฝ์ ๋นํ์ฑํํ๊ณ `prisoner-of-azkaban`์ ๋ํ ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ฉด, `python`์ ์คํํ ๋ `prisoner-of-azkaban`์ ๊ฐ์ ํ๊ฒฝ์ ์๋ Python์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
<div class="termy">