@ -2,13 +2,13 @@
Python ํ๋ก์ ํธ๋ฅผ ์์
ํ ๋๋ **๊ฐ์ ํ๊ฒฝ** (๋๋ ์ด์ ์ ์ฌํ ๋ฉ์ปค๋์ฆ)์ ์ฌ์ฉํด ๊ฐ ํ๋ก์ ํธ๋ง๋ค ์ค์นํ๋ ํจํค์ง๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Python ํ๋ก์ ํธ๋ฅผ ์์
ํ ๋๋ **๊ฐ์ ํ๊ฒฝ** (๋๋ ์ด์ ์ ์ฌํ ๋ฉ์ปค๋์ฆ)์ ์ฌ์ฉํด ๊ฐ ํ๋ก์ ํธ๋ง๋ค ์ค์นํ๋ ํจํค์ง๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
/// i nf o
/// note | ์ฐธ๊ณ
์ด๋ฏธ ๊ฐ์ ํ๊ฒฝ์ ๋ํด ์๊ณ ์๊ณ , ์ด๋ป๊ฒ ์์ฑํ๊ณ ์ฌ์ฉํ๋์ง๋ ์๊ณ ์๋ค๋ฉด, ์ด ์น์
์ ๊ฑด๋๋ฐ์ด๋ ๊ด์ฐฎ์ต๋๋ค. ๐ค
์ด๋ฏธ ๊ฐ์ ํ๊ฒฝ์ ๋ํด ์๊ณ ์๊ณ , ์ด๋ป๊ฒ ์์ฑํ๊ณ ์ฌ์ฉํ๋์ง๋ ์๊ณ ์๋ค๋ฉด, ์ด ์น์
์ ๊ฑด๋๋ฐ์ด๋ ๊ด์ฐฎ์ต๋๋ค. ๐ค
///
///
/// tip
/// tip | ํ
**๊ฐ์ ํ๊ฒฝ**์ **ํ๊ฒฝ ๋ณ์**์ ๋ค๋ฆ
๋๋ค.
**๊ฐ์ ํ๊ฒฝ**์ **ํ๊ฒฝ ๋ณ์**์ ๋ค๋ฆ
๋๋ค.
@ -18,7 +18,7 @@ Python ํ๋ก์ ํธ๋ฅผ ์์
ํ ๋๋ **๊ฐ์ ํ๊ฒฝ**(๋๋ ์ด์ ์ ์ฌ
///
///
/// i nf o
/// note | ์ฐธ๊ณ
์ด ํ์ด์ง์์๋ **๊ฐ์ ํ๊ฒฝ**์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ์์ ์๋ ค๋๋ฆฝ๋๋ค.
์ด ํ์ด์ง์์๋ **๊ฐ์ ํ๊ฒฝ**์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ์์ ์๋ ค๋๋ฆฝ๋๋ค.
@ -55,7 +55,7 @@ $ cd awesome-project
Python ํ๋ก์ ํธ๋ฅผ **์ฒ์ ์์ํ ๋** , ๊ฐ์ ํ๊ฒฝ์ ** < dfn title = "๋ค๋ฅธ ์ต์
๋ ์์ง๋ง, ์ด๊ฒ์ ๊ฐ๋จํ ๊ฐ์ด๋๋ผ์ธ์
๋๋ค" > ํ๋ก์ ํธ ๋ด๋ถ</ dfn > **์ ์์ฑํ์ธ์.
Python ํ๋ก์ ํธ๋ฅผ **์ฒ์ ์์ํ ๋** , ๊ฐ์ ํ๊ฒฝ์ ** < dfn title = "๋ค๋ฅธ ์ต์
๋ ์์ง๋ง, ์ด๊ฒ์ ๊ฐ๋จํ ๊ฐ์ด๋๋ผ์ธ์
๋๋ค" > ํ๋ก์ ํธ ๋ด๋ถ</ dfn > **์ ์์ฑํ์ธ์.
/// tip
/// tip | ํ
์ด ์์
์ **ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง** ํ๋ฉด ๋๋ฉฐ, ์์
ํ ๋๋ง๋ค ํ ํ์๋ ์์ต๋๋ค.
์ด ์์
์ **ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง** ํ๋ฉด ๋๋ฉฐ, ์์
ํ ๋๋ง๋ค ํ ํ์๋ ์์ต๋๋ค.
@ -96,7 +96,7 @@ $ uv venv
< / div >
< / div >
/// tip
/// tip | ํ
๊ธฐ๋ณธ์ ์ผ๋ก `uv` ๋ `.venv` ๋ผ๋ ๋๋ ํฐ๋ฆฌ์ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก `uv` ๋ `.venv` ๋ผ๋ ๋๋ ํฐ๋ฆฌ์ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํฉ๋๋ค.
@ -118,7 +118,7 @@ $ uv venv
์ดํ ์คํํ๋ Python ๋ช
๋ น์ด์ ์ค์นํ๋ ํจํค์ง๊ฐ ์ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๋๋ก, ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ์ธ์.
์ดํ ์คํํ๋ Python ๋ช
๋ น์ด์ ์ค์นํ๋ ํจํค์ง๊ฐ ์ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๋๋ก, ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ์ธ์.
/// tip
/// tip | ํ
ํ๋ก์ ํธ ์์
์ ์ํด **์ ํฐ๋ฏธ๋ ์ธ์
**์ ์์ํ ๋๋ง๋ค **๋งค๋ฒ** ์ด ์์
์ ํ์ธ์.
ํ๋ก์ ํธ ์์
์ ์ํด **์ ํฐ๋ฏธ๋ ์ธ์
**์ ์์ํ ๋๋ง๋ค **๋งค๋ฒ** ์ด ์์
์ ํ์ธ์.
@ -162,7 +162,7 @@ $ source .venv/Scripts/activate
////
////
/// tip
/// tip | ํ
ํด๋น ํ๊ฒฝ์ **์ ํจํค์ง**๋ฅผ ์ค์นํ ๋๋ง๋ค, ํ๊ฒฝ์ ๋ค์ **ํ์ฑํ**ํ์ธ์.
ํด๋น ํ๊ฒฝ์ **์ ํจํค์ง**๋ฅผ ์ค์นํ ๋๋ง๋ค, ํ๊ฒฝ์ ๋ค์ **ํ์ฑํ**ํ์ธ์.
@ -174,7 +174,7 @@ $ source .venv/Scripts/activate
๊ฐ์ ํ๊ฒฝ์ด ํ์ฑํ๋์ด ์๋์ง(์ด์ ๋ช
๋ น์ด๊ฐ ์๋ํ๋์ง) ํ์ธํฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ์ด ํ์ฑํ๋์ด ์๋์ง(์ด์ ๋ช
๋ น์ด๊ฐ ์๋ํ๋์ง) ํ์ธํฉ๋๋ค.
/// tip
/// tip | ํ
์ด ๋จ๊ณ๋ **์ ํ ์ฌํญ**์ด์ง๋ง, ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๊ณ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์๋ํ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์๋์ง **ํ์ธ**ํ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
์ด ๋จ๊ณ๋ **์ ํ ์ฌํญ**์ด์ง๋ง, ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ๊ณ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์๋ํ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์๋์ง **ํ์ธ**ํ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
@ -214,7 +214,7 @@ C:\Users\user\code\awesome-project\.venv\Scripts\python
## `pip` ์
๊ทธ๋ ์ด๋ { #upgrade -pip }
## `pip` ์
๊ทธ๋ ์ด๋ { #upgrade -pip }
/// tip
/// tip | ํ
[`uv` ](https://github.com/astral-sh/uv )๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, `pip` ๋์ `uv` ๋ก ์ค์นํ๊ฒ ๋๋ฏ๋ก `pip` ์ ์
๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์์ต๋๋ค. ๐
[`uv` ](https://github.com/astral-sh/uv )๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, `pip` ๋์ `uv` ๋ก ์ค์นํ๊ฒ ๋๋ฏ๋ก `pip` ์ ์
๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์์ต๋๋ค. ๐
@ -224,7 +224,7 @@ C:\Users\user\code\awesome-project\.venv\Scripts\python
ํจํค์ง ์ค์น ์ค ๋ฐ์ํ๋ ๋ค์ํ ํน์ดํ ์ค๋ฅ๋ ๋จผ์ `pip` ๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ง์ผ๋ก ํด๊ฒฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํจํค์ง ์ค์น ์ค ๋ฐ์ํ๋ ๋ค์ํ ํน์ดํ ์ค๋ฅ๋ ๋จผ์ `pip` ๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ง์ผ๋ก ํด๊ฒฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
/// tip
/// tip | ํ
๋ณดํต ์ด ์์
์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
๋ณดํต ์ด ์์
์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
@ -242,7 +242,7 @@ $ python -m pip install --upgrade pip
< / div >
< / div >
/// tip
/// tip | ํ
๋๋ก๋ pip๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ค๊ณ ํ ๋ ** `No module named pip` ** ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋๋ก๋ pip๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ค๊ณ ํ ๋ ** `No module named pip` ** ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
@ -266,13 +266,13 @@ $ python -m ensurepip --upgrade
**Git**์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด(์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค), `.venv` ์ ๋ชจ๋ ๋ด์ฉ์ Git์์ ์ ์ธํ๋๋ก `.gitignore` ํ์ผ์ ์ถ๊ฐํ์ธ์.
**Git**์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด(์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค), `.venv` ์ ๋ชจ๋ ๋ด์ฉ์ Git์์ ์ ์ธํ๋๋ก `.gitignore` ํ์ผ์ ์ถ๊ฐํ์ธ์.
/// tip
/// tip | ํ
[`uv` ](https://github.com/astral-sh/uv )๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์๋ค๋ฉด, ์ด๋ฏธ ์๋์ผ๋ก ์ฒ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ์ด ๋จ๊ณ๋ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค. ๐
[`uv` ](https://github.com/astral-sh/uv )๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค์๋ค๋ฉด, ์ด๋ฏธ ์๋์ผ๋ก ์ฒ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ์ด ๋จ๊ณ๋ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค. ๐
///
///
/// tip
/// tip | ํ
๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์งํ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
@ -306,7 +306,7 @@ $ echo "*" > .venv/.gitignore
ํ๊ฒฝ์ ํ์ฑํํ ๋ค, ๊ทธ ์์ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
ํ๊ฒฝ์ ํ์ฑํํ ๋ค, ๊ทธ ์์ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
/// tip
/// tip | ํ
ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋ ์
๊ทธ๋ ์ด๋ํ ๋๋ **ํ ๋ฒ**๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋ ์
๊ทธ๋ ์ด๋ํ ๋๋ **ํ ๋ฒ**๋ง ํ๋ฉด ๋ฉ๋๋ค.
@ -318,7 +318,7 @@ $ echo "*" > .venv/.gitignore
๊ธํ๊ฒ ์์
์ค์ด๊ณ ํ๋ก์ ํธ์ ํจํค์ง ์๊ตฌ์ฌํญ์ ์ ์ธํ๋ ํ์ผ์ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด, ํจํค์ง๋ฅผ ์ง์ ์ค์นํ ์ ์์ต๋๋ค.
๊ธํ๊ฒ ์์
์ค์ด๊ณ ํ๋ก์ ํธ์ ํจํค์ง ์๊ตฌ์ฌํญ์ ์ ์ธํ๋ ํ์ผ์ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด, ํจํค์ง๋ฅผ ์ง์ ์ค์นํ ์ ์์ต๋๋ค.
/// tip
/// tip | ํ
ํ๋ก๊ทธ๋จ์ ํ์ํ ํจํค์ง์ ๋ฒ์ ์ ํ์ผ(์: `requirements.txt` ๋๋ `pyproject.toml` )์ ์ ์ด๋๋ ๊ฒ์ (๋งค์ฐ) ์ข์ ์๊ฐ์
๋๋ค.
ํ๋ก๊ทธ๋จ์ ํ์ํ ํจํค์ง์ ๋ฒ์ ์ ํ์ผ(์: `requirements.txt` ๋๋ `pyproject.toml` )์ ์ ์ด๋๋ ๊ฒ์ (๋งค์ฐ) ์ข์ ์๊ฐ์
๋๋ค.
@ -419,7 +419,7 @@ Hello World
* [VS Code ](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment )
* [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 )
* [PyCharm ](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html )
/// tip
/// tip | ํ
๋ณดํต ์ด ์ค์ ์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ๋ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
๋ณดํต ์ด ์ค์ ์ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ๋ **ํ ๋ฒ๋ง** ํ๋ฉด ๋ฉ๋๋ค.
@ -445,7 +445,7 @@ $ deactivate
/// tip
/// tip | ํ
์์ ๋ด์ฉ์ด ๋ฌด์์ธ์ง ๋ ์ดํดํ๊ณ ์ถ์ผ์ ๊ฐ์?
์์ ๋ด์ฉ์ด ๋ฌด์์ธ์ง ๋ ์ดํดํ๊ณ ์ถ์ผ์ ๊ฐ์?
@ -536,7 +536,7 @@ flowchart LR
end
end
```
```
/// tip
/// tip | ํ
Python ํจํค์ง์์๋ **์ ๋ฒ์ **์์ **ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณ๊ฒฝ(breaking changes)**์ **ํผํ๋ ค๊ณ ** ์ต์ ์ ๋คํ๋ ๊ฒ์ด ๋งค์ฐ ์ผ๋ฐ์ ์ด์ง๋ง, ์์ ์ ์ํด ๋ ์ต์ ๋ฒ์ ์ ์๋์ ์ผ๋ก ์ค์นํ๊ณ , ํ
์คํธ๋ฅผ ์คํํด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ ๋ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Python ํจํค์ง์์๋ **์ ๋ฒ์ **์์ **ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณ๊ฒฝ(breaking changes)**์ **ํผํ๋ ค๊ณ ** ์ต์ ์ ๋คํ๋ ๊ฒ์ด ๋งค์ฐ ์ผ๋ฐ์ ์ด์ง๋ง, ์์ ์ ์ํด ๋ ์ต์ ๋ฒ์ ์ ์๋์ ์ผ๋ก ์ค์นํ๊ณ , ํ
์คํธ๋ฅผ ์คํํด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ ๋ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@ -643,7 +643,7 @@ $ source .venv/Scripts/activate
๊ทธ ๋ณ์ ์ค ํ๋๊ฐ `PATH` ๋ณ์์
๋๋ค.
๊ทธ ๋ณ์ ์ค ํ๋๊ฐ `PATH` ๋ณ์์
๋๋ค.
/// tip
/// tip | ํ
`PATH` ํ๊ฒฝ ๋ณ์์ ๋ํด ๋ ์์๋ณด๋ ค๋ฉด [ํ๊ฒฝ ๋ณ์ ](environment-variables.md#path-environment-variable ) ์น์
์ ์ฐธ๊ณ ํ์ธ์.
`PATH` ํ๊ฒฝ ๋ณ์์ ๋ํด ๋ ์์๋ณด๋ ค๋ฉด [ํ๊ฒฝ ๋ณ์ ](environment-variables.md#path-environment-variable ) ์น์
์ ์ฐธ๊ณ ํ์ธ์.
@ -776,7 +776,7 @@ Linux์ macOS์์๋ `which`, Windows PowerShell์์๋ `Get-Command`๋ฅผ
๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ํ๊ฒฝ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ํ๊ฒฝ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
/// tip
/// tip | ํ
๊ฐ์ ํ๊ฒฝ์ ํ๋ ํ์ฑํํด์ Python์ ์ฌ์ฉํ ๋ค์, **๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ด๋**ํ๊ธฐ ์ฝ์ต๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ํ๋ ํ์ฑํํด์ Python์ ์ฌ์ฉํ ๋ค์, **๋ค๋ฅธ ํ๋ก์ ํธ๋ก ์ด๋**ํ๊ธฐ ์ฝ์ต๋๋ค.
@ -819,7 +819,7 @@ Traceback (most recent call last):
< / div >
< / div >
ํ์ง๋ง ๊ฐ์ ํ๊ฒฝ์ ๋นํ์ฑํํ๊ณ `prisoner-of-as kaban` ์ ๋ํ ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ฉด, `python` ์ ์คํํ ๋ `prisoner-of-azkaban` ์ ๊ฐ์ ํ๊ฒฝ์ ์๋ Python์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ๊ฐ์ ํ๊ฒฝ์ ๋นํ์ฑํํ๊ณ `prisoner-of-az kaban` ์ ๋ํ ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ฉด, `python` ์ ์คํํ ๋ `prisoner-of-azkaban` ์ ๊ฐ์ ํ๊ฒฝ์ ์๋ Python์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
< div class = "termy" >
< div class = "termy" >