codingcogs' logo

Poetry و UV

Poetry چیست؟

ابزار Poetry یک جعبه ابزار dependency management و packaging برای کدهای پایتون است. برخلاف ابزار دیگر update کردن پکیج ها و افزایش امنیت سیستم در آن بسیار راحت است و در کنار این مسئله مانند pipenv یک lockfile تولید می کند که قابلیت بازتولید دقیق محیط توسعه و دیپلویمنت را برای پروژه و اعضای تیم فراهم می کند. دستورات مختلفی در CLI ابزار Poetry وجود دارد و توصیه میکنیم که حتما داکیومنت های اصلی آن را بررسی کنید:

https://python-poetry.org/docs/

نصب Poetry

بعد از این میتوانید با استفاده از یکی از دو دستور زیر محیط خود را ایجاد کنید:

# to create a directory and a pyproject.toml file in it
poetry new poetry-demo

# to create a pyproject.toml file in current directory
poetry init

مراحل زیر را برای پروژه های شخصی یا پروژه هایی که میخواهید شروع کنید، نیز میتوانید انجام دهید ولی برای این دوره شما به عنوان یک برنامه نویس که تنها وظیفه ی اجرا و توسعه ی کدها در یک محیط آماده را دارد( کارآموزی، جونیوری و مید لول ای) قرار نیست خودتان محیط مجازی مناسب برای اجرای کدها را بسازید و قرار است فقط از محیطی که در اختیار شما قرار گرفته استفاده کنید.

برای نصب پکیج ها:

poetry add fastapi uvicorn[standard]

نکته ی بسیار مهم:

دیگر در طول دوره نیاز به نصب چیزی ندارید اما اسم پکیج های مورد استفاده را برای محیط venv که دیگر از آن استفاده نخواهیم کرد می بینید. آشنایی با اسم پکیج های اصلی و پرکاربرد مهم است.


برای فعالسازی محیط مجازی:

poetry shell

افزودن محیط مجازی به IDE

نمونه فایل TOML

# pyproject.toml
[tool.poetry]
name = "fastapi-junior"
version = "2.0.0"
description = ""
authors = ["SoroushMoosapour <s75moosapour@gmail.com>"]
license = "MIT"
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"
fastapi = "^0.110.0"
uvicorn = "^0.28.0"
pydantic = "^2.6.4"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

آپدیت استفاده از UV

پیشنهاد می‌کنیم برای یادگیری بهتر و درگیر شدن بیشتر با دیباگ و سوتی‌های از clone کردن پروژه از github خودداری کنید و خودتان با استفاده از UV به ساخت محیط مجازی و نوشتن کد‌ها بپردازید.

نسبت به Poetry می‌توانید سرعت بیشتری را با UV تجربه کنید و سرعت UV تقریبا 16 برابر Poetry است. البته Poetry نیز نسبت به ابزار کلاسیک مثل venv یا PiPENV تا 5 برابر سریع‌تر است و گزینه‌ی بسیار خوبی است اما بازهم UV را به عنوان یک راه حل بهتر و اینکه بیشتر یاد بگیرید توصیه می‌کنیم. داکیومنت کامل UV در آدرس زیر قرار دارد:

https://docs.astral.sh/uv/

در زیر آموزش استفاده از UV را ببینید:

تمرین:

پروژه‌ی خود را که با UV به صورت اتوماتیک ایجاد شده است Dockerize کنید:

https://docs.astral.sh/uv/guides/integration/docker/#available-images