๊ฐ์
mcp ๊ด๋ จ ๊นํ๋ธ๋ฅผ ๋์๋ค๋๋ค ๋ณด๋ฉด ์ต์ python ํ๋ก์ ํธ๋ค์ ๋๋ถ๋ถ uv๋ฅผ ํตํด ์คํ์ด๋๋ ๊ฒ์ ์ ์ ์๋ค.
์ด๊ฒ๋ญ์ง ํด์ ์์๋ดค๋๋ฐ, ์คํํ ๋ ํ๊ฒฝ์ ์๋์ผ๋ก ์ค์ ํด์ฃผ๊ธฐ์ ์์ ํ๊ณ ํธํ ๋ฟ ์๋๋ผ ๋น ๋ฅด๊ธฐ๊น์ง ํ๋ค๊ณ ํ๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ณด์.
UV git (link)
๊นํ๋ธ ํ์ด์ง์ ์ค๋ช ์ ๋ฐ๋ฅด๋ฉด
์์ฒญ๋๊ฒ ๋น ๋ฅธ ํ์ด์ฌ ํจํค์ง & ํ๋ก์ ํธ ๋งค๋์
๋ฌ์คํธ๋ก ์์ฑ๋จ
highlights
-
- ๐ pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv ๋ฑ์ ๋์ฒดํ ์ ์๋ ๋จ์ผ ๋๊ตฌ
-
- โก๏ธ pip๋ณด๋ค 10~100๋ฐฐ ๋น ๋ฆ
-
- ๐๏ธ ๋ฒ์ฉ ๋ฝํ์ผ๊ณผ ํจ๊ป ํฌ๊ด์ ์ธ ํ๋ก์ ํธ ๊ด๋ฆฌ ์ ๊ณต
-
- โ๏ธ ์ธ๋ผ์ธ ์์กด์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์คํฌ๋ฆฝํธ ์คํ ์ง์
-
- ๐ Python ๋ฒ์ ์ค์น ๋ฐ ๊ด๋ฆฌ
-
- ๐ ๏ธ Python ํจํค์ง๋ก ๋ฐฐํฌ๋ ๋๊ตฌ ์คํ ๋ฐ ์ค์น
-
- ๐ฉ ์ต์ํ CLI๋ก ์ฑ๋ฅ ํฅ์๋ pip ํธํ ์ธํฐํ์ด์ค ์ ๊ณต
-
- ๐ข ํ์ฅ ๊ฐ๋ฅํ ํ๋ก์ ํธ๋ฅผ ์ํ Cargo ์คํ์ผ์ ์ํฌ์คํ์ด์ค ์ง์
-
- ๐พ ์์กด์ฑ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํ ๊ธ๋ก๋ฒ ์บ์๋ก ๋์คํฌ ๊ณต๊ฐ ํจ์จ์ ์ฌ์ฉ
-
- โฌ Rust๋ Python ์์ด๋ curl ๋๋ pip๋ก ์ค์น ๊ฐ๋ฅ
-
- ๐ฅ๏ธ macOS, Linux, Windows ์ง์
ํ์ํ ๊ฒ๋ค๋ง ๋๋ฌ๋ณด๋๋ก ํ์.
์ค์น
10 โฌ Rust๋ Python ์์ด๋ curl ๋๋ pip๋ก ์ค์น ๊ฐ๋ฅ
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
ํน์
pip install uv
ํฐ๋ฏธ๋์์ ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ด pip๋ฅผ ํตํด ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค.
์์ผ์ค๋ฝ์ง๋ง ํธ๋ฆฌํ๋ค.
ํ์ด์ฌ ๋ฒ์ ์ค์น ๋ฐ ๊ด๋ฆฌ
1 ๐ pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv ๋ฑ์ ๋์ฒดํ ์ ์๋ ๋จ์ผ ๋๊ตฌ
5 ๐ Python ๋ฒ์ ์ค์น ๋ฐ ๊ด๋ฆฌ
6 ๐ ๏ธ Python ํจํค์ง๋ก ๋ฐฐํฌ๋ ๋๊ตฌ ์คํ ๋ฐ ์ค์น
$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
+ cpython-3.10.14-macos-aarch64-none
+ cpython-3.11.9-macos-aarch64-none
+ cpython-3.12.4-macos-aarch64-none
ํ์ด์ฌ ์ค์น [๋ฒ์ ] [๋ฒ์ ] ...
๊ณผ ๊ฐ์ด ์จ์, ํ์ด์ฌ์ ์ค์นํ ์ ์๋ค.
node์์ npm์ ์ญํ ์ uv์์๋ ๊ฐ์ง๋ ๊ฒ ๊ฐ๋ค.
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>
๊ฐ์ํ๊ฒฝ์ ๋ง๋ค์ด [ํ์ํ๋ค๋ฉด ๋ฒ์ ์ง์ ]
์ผ๋ก ๊ฐ๋จํ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค ์๋ ์๋ค.
CPython, Pypy๊ฐ์ ๋ค์ํ ๋ฐํ์๋ ์ง์ ํด์ค ์ ์๋ค.
๋ฒ์ ์ง์ ์ด ์๋ค๋ฉด ๊ธฐ๋ณธ์ค์ ์ผ๋ก ๋ง๋ค์ด์ง๋ค.
$ uv python pin 3.11
Pinned `.python-version` to `3.11`
ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๊ธฐ๋ณธ ์ค์ ํ์ด์ฌ ๋ฒ์ ์ ์ง์ ํด ์ค ์๋ ์๋ค.
์๋
2 โก๏ธ pip๋ณด๋ค 10~100๋ฐฐ ๋น ๋ฆ
์คํํ๊ณ ์ถ์๋๋ฐ streamlit์ด๋ผ๋ ์ค์น์ ์ค๋ ๊ฑธ๋ฆฌ๋ ํ์ผ์ด ์๋ ๊ฒ์ ์์๋ค.
- ๊ฐ์ํ๊ฒฝ์ ์ค์ ํ๊ณ
- ๋ด๋ถ์ streamlit์ ์ค์นํ๊ณ
- ์๊ฐ์ ์ธก์ ํด์ฃผ๋
ํ์ผ์ ๋ง๋ค์. pip ๋ฒ์ ๊ณผ uv๋ฒ์ ์ผ๋ก.
# pip.sh
#!/bin/bash
echo "๐ Python virtual environment ์์ฑ ์์..."
START_TIME=$(date +%s)
# ๊ฐ์ํ๊ฒฝ ์์ฑ
python3 -m venv .venv
source .venv/bin/activate
echo "๐ฆ streamlit ์ค์น ์ค..."
pip3 install --upgrade pip >/dev/null
pip3 install streamlit
END_TIME=$(date +%s)
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "โ
streamlit ์ค์น ์๋ฃ!"
echo "โฑ๏ธ ์์ ์๊ฐ: ${ELAPSED_TIME}์ด"
# ๊ฐ์ํ๊ฒฝ ๋นํ์ฑํ ๋ฐ ์ญ์
deactivate
rm -rf .venv
echo "๐งน ๊ฐ์ํ๊ฒฝ(.venv) ์ญ์ ์๋ฃ"
#uv.sh
#!/bin/bash
echo "๐ uv๋ฅผ ์ด์ฉํ streamlit ์ค์น ์์!"
START_TIME=$(date +%s)
# uv๋ก venv ์์ฑ
uv venv --python 3.12.0
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ
source .venv/bin/activate
# streamlit ์ค์น
echo "๐ฆ streamlit ์ค์น ์ค..."
uv pip install streamlit
END_TIME=$(date +%s)
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "โ
streamlit ์ค์น ์๋ฃ!"
echo "โฑ๏ธ ์์ ์๊ฐ: ${ELAPSED_TIME}์ด"
# ๊ฐ์ํ๊ฒฝ ๋นํ์ฑํ ๋ฐ ์ญ์
deactivate
rm -rf .venv
echo "๐งน ๊ฐ์ํ๊ฒฝ(.venv) ์ญ์ ์๋ฃ"
pip.sh ๊ฒฐ๊ณผ
uv.sh ๊ฒฐ๊ณผ
์๊ฒฌ
๋ด ํ๊ฒฝ(macbook m1 pro)์์ ์๊ฐ๋ณด๋ค ํฐ์ฐจ์ด๊ฐ ์๋๋? ์ถ์ง๋ง ๊ทธ๊ฒ๋ณด๋ค๋ ์ค๋นํ๋๋ฐ ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ ธ๊ณ , ๋ค์ด๋ก๋ ์๊ฐ์๋ ๋ ํฐ ์ฐจ์ด๊ฐ ๋ฌ๋ค.
์ค๋นํ๋ ๋ฐ 2์ด๋ ๊ฑธ๋ ธ๋ค.
ํ๋ก์ ํธ ํ๊ฒฝ์ค์ & ์คํ
3 ๐๏ธ ๋ฒ์ฉ ๋ฝํ์ผ๊ณผ ํจ๊ป ํฌ๊ด์ ์ธ ํ๋ก์ ํธ ๊ด๋ฆฌ ์ ๊ณต
8 ๐ข ํ์ฅ ๊ฐ๋ฅํ ํ๋ก์ ํธ๋ฅผ ์ํ Cargo ์คํ์ผ์ ์ํฌ์คํ์ด์ค ์ง์
ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ํ ๋ช ๋ น์ด์ ์คํ์ ์์ฑ๋๋ ํ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
โฏ uv init
Initialized project `uv` # ํ์ฌ ํด๋๋ช
์ผ๋ก ๊ธฐ๋ณธ ์์ฑ
โฏ uv init mytest
Initialized project `mytest` at `๊ฒฝ๋ก` # ํด๋๋ฅผ ๋ง๋ค๊ณ ๋ด๋ถ์ ํ๋ก์ ํธ ์์ฑ
โฏ cd mytest
โฏ ls -a
.git .python-version main.py pyproject.toml README.md
์ด ์ค toml ํ์ผ์ ์ฒ์๋ณด๋ ๊ฒ ๊ฐ๋ค.
Rust๋ ์ด๋ฐ ํ์ผ์ ํตํด ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ค๊ณ ํ๋๋ฐ, ํ์ด์ฌ์์๋ ๋น์ทํ๊ฒ ํ ์ ์๋๋ก ๋ง๋ ํ์ผ์ด๋ค.
# pyproject.toml
[project]
name = "mytest"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []
dependencies์๋ ๋ด๊ฐ ์ค์นํ ์์กด์ฑ๋ค์ด ์ ์ฅ๋๋ค.
์์กด์ฑ
์์กด์ฑ๋ค์ด ์๋์ผ๋ก ์ถ๊ฐ๊ฐ ๋๋ ์ง ํ์ธํด๋ณด์.
โฏ uv add streamlit
Using CPython 3.12.0
Creating virtual environment at: .venv
Resolved 39 packages in 202ms
Prepared 36 packages in 2.92s
Installed 36 packages in 90ms
โฏ ls -a
. .python-version main.py README.md
.. .venv pyproject.toml uv.lock
# pyproject.toml
[project]
... # ์๋ต
requires-python = ">=3.12"
dependencies = [
"streamlit>=1.44.1",
]
์ ๋ฆฌํด๋ณด์. uv๋ก ํ๋ก์ ํธ์ streamlit์ ๋ํ์ ๋ฟ์ธ๋ฐโฆ
- venv ์ค์ ์ด ๋์๋ค.
- uv.lock ํ์ผ์ด ์๊ฒผ๋ค. (yarn.lock ๋ฑ์ ํ์ผ๊ณผ ๋น์ทํ๊ฒ, ๊ฐ๋ ฅํ ์์กด์ฑ ๊ธฐ๋ก ํ์ผ)
- toml ํ์ผ์๋ ์์กด์ฑ์ด ์ ์ฅ๋์๋ค.
๊ณต์ ํ ํ์ผ์ uv ํ์ค๋๋ก ์คํ๋ง ํ๋ฉด ์ ๋ง ์ต๋ํ ๊ฐ์ ํ๊ฒฝ์์ ์คํํ ์ ์๋ค.
๋ฐ๋๋ก ์ง์ฐ๊ณ ์ถ์ ๊ฒ์ uv remove [์์กด์ฑ]
์ ํตํด ๊ฐ๋ฅํ๋ค
ํ๋ก์ ํธ ํ์ด์ฌ ๋ฒ์
์ด ๋ํ ๋น์ฐํ ์ฝ๊ฒ ์ค์ ํ ์ ์๋ค.
.python-version
ํ์ผ์ ๋ด์ฉ์ ์ํ๋ ๋ฒ์ ์ผ๋ก ๋ฐ๊พผ๋ค.pyproject.toml
ํ์ผ์requires-python = ">=[๋ฒ์ ]"
๋ฒ์ ๋ถ๋ถ์ ์ํ๋ ๋ฒ์ ์ผ๋ก ๋ฐ๊พผ๋ค.
โฏ uv run main.py
Using CPython 3.11.12
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Hello from mytest!
๋ฐ๋ ๋ฒ์ ์ ๋ง๋ venv๋ฅผ ๋ค์ ๋ง๋ค์ด์ฃผ๋ ๋ถ๋ถ์ด ํฅ์ด๋ค.
ํ๊ธฐ
- ๋๋ฌด ์ ์ธ๊ฒ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์ & ํ์ด์ฌ ํ๋ก์ ํธ ๊ด๋ฆฌ์๊ฐ ๋ง๋ค์ด์ก๋ค.
- ์ด๋ฏธ ๋ง์ mcp๋ฅผ ๋น๋กฏํ ํ์ด์ฌ ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๋ค์ด ์ ๊ทน ํ์ฉํ๊ณ ์๊ณ , ๊ทธ ์ด์ ๋ฅผ ์ ๊ฒ ๊ฐ๋ค.
- ๋ค๋ฃจ์ง ์์์ง๋ง, mcp์์ ์คํฌ๋ฆฝํธ ๋ฑ์ ๋ฃ์ ๋, ์ด๋ค ํ์ด์ฌ์ ์ธ ์ง ๋ฑ์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ฒ ์์ฑํด์ผํ๋ ๋ฌธ์ ๋ ํด๊ฒฐํด์ค๋ค๊ณ ํ๋ค.
- ํจํค์ง ์ค์น๋ ๋น ๋ฅด๋ค. ๋จ์ ์ด ์๋ค. ๊ตณ์ด๊ตณ์ด ๊ผฝ์๋ฉด ์๋ก์ด ์ฌ์ฉ ์ปค๋งจ๋?
- pycharm๊ฐ์ ์ข์ ide๋ฅผ ์ฌ์ฉํ๋ฉด, .venv๋ฑ์ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์๋ค.
- ์ด๋ฐ ๊ณผ์ ์ ๋ชจ๋ ์๋์ผ๋ก ํด์ฃผ๋๊ฒ, ์ง์ง ๊ด์ฐฎ์ ide ์ ๋์ ๊ฐ์น๋ฅผ ๊ฐ์ง์๋ ์์ง ์์๊น ์๊ฐํ๋ค.
- ๋น์ฅ 0.์๋ผ์คํฑ ํ๋ก์ ํธ ๊ฐ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ์๊ณ ์ ์ํ๋ค.
๋ค๋ง ์ ๋๋ก ์ฌ์ฉ๋ฒ์ ์์๋ณด๊ณ ๋๋, ํ๋ก์ ํธ ์์, ํ๊ฒฝ์ค์ , ๊ณต์ ๋ฑ์ ์ฅ์ ์ ๊ฐ์ง๊ธฐ์ ์ฅ๊ธฐ๊ฐ ํ๋ก์ ํธ์๋ ๋ฑํ ํ์๊ฐ ์์ด์ง๋ค๊ณ ์๊ฐ์ด ๋ค๊ธดํ๋ค.