یه روز آفتابی تو در سالهای نه چندان دور، جایی که برنامه نویسها هنوز با کلی مشکل تو مدیریت وابستگیهای پروژه هاشون دست و پنجه نرم میکردن، یه برنامه نویس به نام «توماس» به فکر چاره افتاد. توماس یه عالمه وقت گذاشت و شب و روز روی لپ تاپش کار کرد تا یه راه حل پیدا کنه. اون تو دل خودش میگفت، "اگه ابزاری بود که میتونست راحت و بی دردسر وابستگیها رو مدیریت کنه، زندگی ما برنامه نویسها چقدر راحتتر میشد!" و اینجا بود که «Poetry» به دنیا اومد. توماس اونقدر تلاش کرد تا بالاخره ابزاری رو ساخت که تمام برنامه نویسهای پایتون ازش استقبال کردن و زندگی شون رو راحتتر کرد.
وابستگی چیست؟
اول بیا یه کم در مورد وابستگیها حرف بزنیم. وابستگی (Dependency) یعنی چی؟ وابستگیها تو دنیای برنامه نویسی، همون کتابخونهها و ابزارهایی هستن که برنامه یا پروژه ت به اونا نیاز داره تا بتونه درست کار کنه. مثلاً، فرض کن یه برنامه نوشتی که نیاز داره از اینترنت داده بگیره. برای این کار، از یه کتابخونه مثل requests استفاده میکنی. حالا requests میشه یه وابستگی برای برنامه ت.
به بیان ساده تر، وابستگیها اون چیزایی هستن که پروژه ت بدون اونا نمیتونه کار کنه. هر وقت یه پروژه رو شروع میکنی، معمولاً باید یه سری کتابخونه و ابزار نصب کنی تا بتونی کدتو بنویسی و اجرا کنی. این کتابخونهها و ابزارها همون وابستگیها هستن.
Poetry چیست؟
Poetry یه ابزار مدیریت بسته و وابستگیها (Package and Dependency Management) برای زبان برنامه نویسی پایتونه که کارها رو برات خیلی راحتتر میکنه. به زبون ساده، این ابزار بهت کمک میکنه تا کتابخونههای مورد نیاز پروژه ت رو راحت نصب، به روزرسانی و مدیریت کنی.
Poetry همه کارها رو برات مثل یه جادوگر انجام میده. فقط کافیه بهش بگی چی میخوای و بقیه کارها رو بسپاری به خودش. اون تمام کتابخونهها رو برات نصب میکنه، نسخههای درست رو انتخاب میکنه و حتی اگه لازم باشه، بسته هات رو برای بقیه منتشر میکنه.
مزایای استفاده از Poetry
Poetry یه ابزار فوق العاده س که کلی ویژگی باحال داره. بیا با هم یه نگاهی به چند تا از ویژگی هاش بندازیم:
1. مدیریت وابستگی ها
Poetry بهت این امکان رو میده که وابستگیهای پروژه ت رو خیلی راحت مدیریت کنی. فقط با یه فرمان میتونی کتابخونههای مورد نیازت رو نصب کنی و نسخههای دقیقشون رو تعیین کنی. این کار باعث میشه دیگه نیازی نباشه به صورت دستی کتابخونهها رو دانلود و نصب کنی.
2. ایجاد و مدیریت فایلهای pyproject.toml
Poetry از فایل pyproject.toml برای مدیریت وابستگیها استفاده میکنه که این فایل به صورت خودکار توسط Poetry ایجاد و به روزرسانی میشه. این فایل تمام اطلاعات مربوط به وابستگی ها، اسکریپتها و تنظیمات پروژه ت رو در خودش نگه میداره و بهت کمک میکنه همه چی رو مرتب و منظم داشته باشی.
3. نسخه بندی و انتشار بسته ها
Poetry بهت کمک میکنه بستههای پایتونی خودت رو راحت نسخه بندی و منتشر کنی. با استفاده از فرمانهای ساده، میتونی بستههای خودت رو تو مخازن عمومی مثل PyPI منتشر کنی. این یعنی اگه بخوای پروژه ت رو با بقیه به اشتراک بذاری، خیلی راحت میتونی این کار رو انجام بدی و نیازی نیست نگران مراحل پیچیده انتشار باشی.
4. یکپارچگی با سایر ابزارها
Poetry با خیلی از ابزارهای دیگه تو دنیای پایتون سازگاره. مثلاً میتونی از Poetry در کنار virtualenv برای مدیریت محیطهای مجازی استفاده کنی. این یکپارچگی باعث میشه بتونی بهترین ابزارهای موجود رو کنار هم استفاده کنی و از همه مزایاشون بهره مند شی.
5. محیطهای مجازی خودکار
یکی دیگه از ویژگیهای عالی Poetry اینه که به صورت خودکار برای هر پروژه یه محیط مجازی ایجاد میکنه. این کار باعث میشه وابستگیهای هر پروژه از هم جدا باشن و تداخل نداشته باشن. این یعنی میتونی بدون نگرانی از ناسازگاری نسخه ها، پروژههای مختلف رو روی یه سیستم داشته باشی.
6. فایلهای قفل وابستگی (Lock Files)
Poetry بهت این امکان رو میده که فایل قفل وابستگی (lock file) ایجاد کنی. این فایل تضمین میکنه که تمام وابستگیهای پروژه ت تو نسخههای مشخص و ثابت نصب بشن. این یعنی اگه پروژه ت رو به یه سیستم دیگه منتقل کنی، یا همکارات بخوان رو پروژه کار کنن، همه دقیقاً همون نسخه هایی رو خواهند داشت که تو استفاده کردی و مشکلات سازگاری به حداقل میرسه.
7. پشتیبانی از نصب وابستگیهای توسعه
Poetry به راحتی وابستگیهای توسعه (Development Dependencies) رو مدیریت میکنه. این وابستگیها شامل ابزارها و کتابخونه هایی میشن که فقط در زمان توسعه پروژه نیاز دارن، مثل کتابخونههای تست و دیباگ. با این ویژگی، وابستگیهای توسعه و تولید رو میتونی جداگانه مدیریت کنی.
8. پشتیبانی از نصب و بروزرسانیهای سریع
Poetry بهت این امکان رو میده که با استفاده از فرمانهای ساده، وابستگیها رو سریع نصب و بروزرسانی کنی. این یعنی وقتی نسخه جدیدی از یه کتابخونه منتشر میشه، میتونی با یه فرمان اون رو بروزرسانی کنی و از آخرین ویژگیها و بهبودها بهره مند بشی.
9. مدیریت ساده و خودکار پروژههای پایتون
Poetry بهت کمک میکنه تا پروژههای پایتون رو به صورت کامل و خودکار مدیریت کنی. این یعنی میتونی با یه فرمان پروژه جدید ایجاد کنی، وابستگیها رو اضافه کنی، بستهها رو منتشر کنی و همه این کارها رو با چند خط فرمان انجام بدی. این ویژگی باعث میشه تمرکزت بیشتر روی کدنویسی و توسعه باشه و کمتر درگیر مسائل مدیریتی بشی.
10. جامعه کاربری و پشتیبانی فعال
Poetry یه جامعه کاربری فعال داره که همیشه آماده کمک و پاسخ به سوالاتت هستن. این یعنی اگه به مشکلی برخوردی یا سوالی داشتی، میتونی از تجربه و دانش بقیه برنامه نویسها استفاده کنی و خیلی سریع راه حل مناسب رو پیدا کنی.
با این همه مزیت، دیگه نیازی نیست نگران مدیریت وابستگیها و بستههای پروژه ت باشی. Poetry همه چیز رو برات آسون و راحت میکنه تا بتونی با خیال راحت روی توسعه و بهبود کدهای خودت تمرکز کنی.
معایب Poetry
Poetry با تمام مزایایی که داره، یه سری معایب هم داره که باید بهشون توجه کنی:
یادگیری اولیه: استفاده از Poetry ممکنه اوایلش یه کم سخت باشه و نیاز به زمان برای یادگیری داره.
سرعت اجرا: بعضی وقت ها، Poetry ممکنه کندتر از ابزارهای دیگه باشه.
پشتیبانی از برخی ابزارها: بعضی ابزارها و کتابخونهها هنوز به طور کامل با Poetry سازگار نیستن.
مقایسه با ابزارهای دیگر
تو دنیای پایتون ابزارهای زیادی برای مدیریت وابستگیها وجود دارن، اما Poetry از خیلی جهات برتری داره. بیا یه نگاهی به مقایسه ای بین Poetry و ابزارهای مشابه بندازیم:
Poetry و Pipenv
ویژگی
Poetry
Pipenv
مدیریت وابستگی ها
✔️
✔️
ایجاد فایلهای پیکربندی
✔️
✔️
انتشار بسته ها
✔️
❌
پشتیبانی از محیطهای مجازی
✔️
✔️
سرعت و عملکرد
عالی
متوسط
فایلهای قفل وابستگی (Lock Files)
✔️
✔️
رابط کاربری
ساده و کاربرپسند
پیچیده
مدیریت نسخه ها
✔️
✔️
قابلیت جداسازی وابستگیهای توسعه
✔️
✔️
رابط کاربری و سادگی: Poetry با رابط کاربری ساده و کاربرپسند خودش باعث میشه که مدیریت وابستگیها و نسخهها خیلی راحتتر باشه. در حالی که Pipenv ممکنه برای تازه کارها کمی پیچیده به نظر بیاد.
انتشار بسته ها: Poetry بهت این امکان رو میده که بستههای پایتونی خودت رو منتشر کنی، اما Pipenv چنین قابلیتی نداره.
سرعت و عملکرد: Poetry از نظر سرعت و عملکرد خیلی بهتر از Pipenv عمل میکنه و این موضوع در پروژههای بزرگ بیشتر به چشم میاد.
پشتیبانی از زبانهای مختلف: Conda از زبانهای برنامه نویسی مختلفی پشتیبانی میکنه، اما Poetry فقط برای پایتون طراحی شده.
اندازه و حجم: Poetry سبک و کم حجمه، اما Conda نسبتاً سنگین تره و ممکنه برای سیستمهای ضعیفتر مناسب نباشه.
ایجاد فایلهای پیکربندی: Poetry فایلهای پیکربندی پروژه رو به صورت خودکار ایجاد و مدیریت میکنه، اما Conda چنین قابلیتی نداره.
انتشار بسته ها: Poetry بهت امکان انتشار بستهها رو میده، اما Conda بیشتر برای مدیریت محیطها و وابستگیها طراحی شده و قابلیتی برای انتشار بستهها نداره.
Poetry و Virtualenv
ویژگی
Poetry
Virtualenv
مدیریت وابستگی ها
✔️
❌
ایجاد فایلهای پیکربندی
✔️
❌
انتشار بسته ها
✔️
❌
پشتیبانی از محیطهای مجازی
✔️
✔️
سادگی در استفاده
✔️
✔️
جداسازی محیطهای مجازی
✔️
✔️
ابزارهای مکمل
✔️
❌
مدیریت وابستگی ها: Poetry به صورت کامل مدیریت وابستگیها رو انجام میده، اما Virtualenv فقط محیطهای مجازی رو ایجاد میکنه و مدیریت وابستگیها رو انجام نمیده.
ابزارهای مکمل: Poetry علاوه بر مدیریت محیطهای مجازی، ابزارهای دیگه ای مثل انتشار بستهها و ایجاد فایلهای پیکربندی رو هم ارائه میده، در حالی که Virtualenv فقط محیطهای مجازی رو مدیریت میکنه.
سادگی در استفاده: هر دو ابزار از نظر سادگی استفاده خوبن، اما Poetry به دلیل جامعیت بیشتر و امکانات کامل تر، یه قدم جلوتره.
Poetry با توجه به امکانات و ویژگی هایی که داره، یه ابزار همه کاره برای مدیریت وابستگی ها، نسخهها و انتشار بسته هاست. در حالی که ابزارهای دیگه مثل Pipenv، Conda و Virtualenv هر کدوم تو یه بخش خاص خوب عمل میکنن، Poetry یه راه حل جامع و یکپارچه ارائه میده که میتونه نیازهای مختلف برنامه نویسان پایتون رو برطرف کنه.
اگه دنبال ابزاری هستی که بتونه همه چیز رو برات راحتتر کنه و نیاز نباشه برای هر کار از یه ابزار جدا استفاده کنی، Poetry بهترین انتخابه.
مثالهای کاربردی
برای اینکه بهتر بفهمی Poetry چطور کار میکنه، بیا چند تا مثال عملی بزنیم:
نصب یک بسته
فرض کن میخوای بسته requests رو نصب کنی. فقط کافیه این فرمان رو تو ترمینال اجرا کنی:
poetry add requests
Poetry به صورت خودکار بسته requests رو نصب و به فایل pyproject.toml اضافه میکنه.
ایجاد یک پروژه جدید
برای ایجاد یه پروژه جدید با Poetry، از این فرمان استفاده کن:
poetry new my-awesome-project
این فرمان یه پروژه جدید با ساختار پیشنهادی Poetry ایجاد میکنه.
مدیریت نسخه ها
اگه میخوای نسخه دقیق یه بسته رو تعیین کنی، میتونی از فایل pyproject.toml استفاده کنی. مثلاً:
[tool.poetry.dependencies]
requests = "^2.25.1"
Poetry به صورت خودکار نسخه مورد نظر رو نصب میکنه.
انتشار بسته
برای انتشار بسته خودت تو PyPI، فقط کافیه این فرمانها رو اجرا کنی:
poetry build
poetry publish
Poetry بهت کمک میکنه بسته ت رو راحت و بی دردسر منتشر کنی.
سوالات متداول
1. Poetry چیه؟
Poetry یه ابزار مدیریت بسته و وابستگیها برای زبان برنامه نویسی پایتونه که بهت کمک میکنه کتابخونههای مورد نیاز پروژه ت رو راحت نصب، به روزرسانی و مدیریت کنی.
2. چطور میتونم Poetry رو نصب کنم؟
برای نصب Poetry، میتونی از این فرمان استفاده کنی:
فایل pyproject.toml یه فایل پیکربندیه که توسط Poetry برای مدیریت وابستگیها و تنظیمات پروژه استفاده میشه.
4. چطور میتونم یه بسته پایتونی رو با استفاده از Poetry منتشر کنم؟
برای انتشار بسته پایتونی، اول بسته رو با فرمان poetry build بساز و بعد با فرمان poetry publish منتشرش کن.
5. آیا Poetry با ابزارهای دیگه مثل virtualenv سازگاره؟
بله، Poetry به خوبی با ابزارهایی مثل virtualenv سازگاره و میتونی از اونا کنار هم استفاده کنی.
6. آیا استفاده از Poetry رایگانه؟
بله، Poetry یه ابزار متن باز و رایگانه که میتونی ازش آزادانه استفاده کنی و توسعه ش بدی.
7. مزیت استفاده از Poetry چیه؟
Poetry بهت این امکان رو میده که وابستگیهای پروژه ت رو راحت مدیریت کنی، بسته هات رو منتشر کنی و از یکپارچگی بهتر با ابزارهای دیگه بهره مند شی.
8. آیا Poetry مناسب پروژههای بزرگ هم هست؟
بله، Poetry برای پروژههای بزرگ هم مناسبه و میتونی ازش تو پروژههای کوچک و بزرگ استفاده کنی.
9. چطور میتونم از نسخههای دقیق بستهها استفاده کنم؟
می تونی تو فایل pyproject.toml نسخه دقیق بستهها رو مشخص کنی و Poetry به صورت خودکار اون نسخهها رو نصب میکنه.
10. آیا Poetry از پلتفرمهای مختلف پشتیبانی میکنه؟
بله، Poetry از پلتفرمهای مختلف پشتیبانی میکنه و میتونی ازش تو ویندوز، مک و لینوکس استفاده کنی.
جمع بندی
Poetry یه ابزار فوق العاده برای مدیریت وابستگیها و بستههای پایتونه که با ویژگیهای منحصر به فردش، زندگی برنامه نویسها رو راحتتر کرده. با استفاده از این ابزار، میتونی وابستگیهای پروژه ت رو راحت مدیریت کنی، بسته هات رو منتشر کنی و از یکپارچگی بهتر با ابزارهای دیگه بهره مند شی.
به طور خلاصه، اگه دنبال ابزاری هستی که کارهای مدیریت بستهها رو برات آسون کنه و از دردسرهای نصب و به روزرسانی کتابخونهها خلاص شی، Poetry بهترین گزینه برای توئه.