مدیریت پروژه‌های Python با uv؛ از dependency تا انتشار package

چرا مهم است

اگر برای نسخه‌های Python، dependencyها و انتشار package از ابزارهای جدا استفاده می‌کنی، uv می‌تواند این کارها را یک‌جا پوشش بدهد. برای تو، نکته مهم فقط سرعت نیست؛ مدیریت خودکار virtual environment و بازتولید محیط پروژه هم اهمیت دارد.

قبل از خواندن، این‌ها را بدان۴ مفهوم
virtual environment

محیطی جدا برای نصب packageهای یک پروژه که کمک می‌کند dependencyهای آن با پروژه‌های دیگر تداخل نداشته باشند.

بیشتر درباره این مفهوم

standalone binary

فایل اجرایی آماده‌ای که برای اجرای خود به نصب جداگانه زبان سازنده یا interpreter آن نیاز ندارد.

بیشتر درباره این مفهوم

Benchmark

آزمونی برای سنجش و مقایسه عملکرد ابزارها تحت شرایط مشخص؛ نتیجه آن به شرایط و نوع کار مورد آزمایش وابسته است.

بیشتر درباره این مفهوم

transitive dependency

یک dependency که پروژه مستقیماً انتخاب نکرده، اما یکی از packageهای موردنیاز پروژه به آن وابسته است.

بیشتر درباره این مفهوم

آموزش Real Python به معرفی uv می‌پردازد؛ یک package manager و ابزار مدیریت پروژه برای Python که با Rust نوشته شده است. هدف این ابزار، سریع‌تر کردن کارهای روزمره و جمع‌کردن قابلیت‌های مختلف در یک ابزار است؛ از نصب dependency و مدیریت نسخه‌های Python تا آماده‌سازی پروژه و انتشار package.

طبق این مطلب، uv بیشتر قابلیت‌هایی را که ابزارهایی مانند pip، pip-tools، pipx، poetry، pyenv، twine و virtualenv ارائه می‌کنند، یک‌جا در اختیار توسعه‌دهنده می‌گذارد. uv می‌تواند چند نسخه از Python را نصب و مدیریت کند و virtual environment موردنیاز پروژه را به‌صورت خودکار بسازد و مدیریت کند تا dependencyهای پروژه از محیط‌های دیگر جدا بمانند.

در بخش آماده‌سازی پروژه، uv می‌تواند ساختار اولیه را همراه با Git repository، virtual environment، فایل pyproject.toml و README ایجاد کند. مدیریت dependency هم به نصب محدود نیست: به‌روزرسانی، حذف و lock کردن dependencyهای مستقیم و غیرمستقیم را پوشش می‌دهد. این قابلیت‌ها به بازتولید محیط کاری پروژه کمک می‌کنند؛ یعنی بتوان محیطی با dependencyهای یکسان را دوباره آماده کرد.

سرعت نصب یکی از محورهای اصلی معرفی uv است. مقاله سرعت نصب package با uv را ۱۰ تا ۱۰۰ برابر pip توصیف می‌کند، اما درباره نمایش تعاملی مقایسه زمان‌ها تأکید دارد که اعداد آن صرفاً نمایشی‌اند و نباید آن‌ها را یک Benchmark دقیق دانست. بنابراین این مقایسه، نتیجه‌ای تضمین‌شده برای همه پروژه‌ها نیست.

uv برای مراحل بعدی کار هم قابلیت دارد: ساخت و انتشار package در package repositories مانند PyPI و نصب و اجرای ابزارهایی مثل pytest، Black و Ruff. همچنین به‌شکل standalone binary عرضه می‌شود؛ بنابراین برای نصب خود uv لازم نیست از قبل Python روی سیستم نصب باشد. بخش موجود از آموزش، نصب از طریق standalone installer و گزینه‌های مبتنی بر PyPI مانند pip و pipx را معرفی می‌کند و دستورهای installer را برای Windows، Linux و macOS نشان می‌دهد.

برای دنبال‌کردن آموزش، آشنایی اولیه با virtual environment، تنظیم pyproject.toml و ساخت package قابل‌توزیع توصیه شده است. برای جزئیات و دستورهای نصب، به مقاله اصلی مراجعه کنید: https://realpython.com/python-uv/

نکته کلیدی

قبل از دنبال‌کردن آموزش، مطمئن شو با virtual environment، فایل pyproject.toml و ساخت package آشنایی داری. عددهای مقایسه سرعت را هم تضمین پروژه خودت ندان؛ خود مطلب می‌گوید زمان‌های نمایش تعاملی صرفاً نمایشی‌اند.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۴)