مدیریت وابستگی ها(depencies) با فایل requirements.txt
مدیریت محیطهای مجازی با pip و virtualenv
معرفی جایگزینهای pip
جمع بندی
pip یک ابزار مدیریت پکیج در پایتون است.این ابزار به شما اجازه میدهید تا پکیجهای خارجی را به راحتی نصب، به روزرسانی و مدیریت کنید،پکیجهای خارجی شامل کدهایی هستند که در خود پایتون پیاده سازی نشده اند و توسط توسعه دهندگان دیگر نوشته شده است.در ادامه به بررسی دقیق ویژگیها و کاربردهای pip میپردازیم و نحوه ی استفاده از آن برای نصب و مدیریت کتابخانههای مورد نیاز را بررسی میکنیم.
pip چیست؟
pip، مخفف "Package Installer for Python"، یک ابزار مدیریت بستهها برای زبان برنامه نویسی پایتون است. این ابزار از مخازن توزیع پکیجها مانند PyPI (Python Package Index) استفاده میکند تا بستههای مورد نیاز را شناسایی کرده و بر روی سیستم شما نصب کند. pip همچنین قابلیت مدیریت وابستگی های(dependency) بستهها را دارد.
وابستگیها یا Dependencies در پایتون، به مجموعه پکیج هایی اشاره دارند که یک پکیج معین برای کارکرد صحیح خود به آنها احتیاج دارد. pip به شما امکان میدهد تا پکیجهای مورد نظر خود را به همراه وابستگیهای آن به راحتی در پروژههای پایتونی خود نصب کنید، در صورت نیاز آنها را حذف نمایید و به آسانی به آخرین نسخهها به روزرسانی کنید.
نصب و راه اندازی pip
یکی از اولین گام هایی که برای استفاده از pip باید انجام دهید، نصب آن بر روی سیستم خود است. در این بخش، گام به گام نحوه ی نصب pip را برای شما توضیح میدهیم.
بررسی نصب pip
قبل از هر چیز، ابتدا باید بررسی کنید که pip بر روی سیستم شما نصب شده است یا خیر. برای این کار، میتوانید یک ترمینال یا دستور خط فرمان باز کنید و دستور زیر را وارد کنید:
pip --version
اگر pip نصب شده باشد، نسخه آن به همراه مشخصات دیگر نمایش داده میشود. اگر پیغام خطا یا پیغام
"pip: command not found" را مشاهده کردید، نشان دهنده این است که pip بر روی سیستم شما نصب نیست.
نصب pip
معمولاً با نصب پایتون، ابزار pip نیز به طور خودکار نصب میشود. با این حال، اگر که pip در محیط پایتون شما نصب نشده است، دو روش برای نصب آن وجود دارد:
ensurepip
ensurepip یک ماژول است که به طور پیش فرض با پایتون ارائه میشود و میتوانید با استفاده از دستور زیر آن را فعال کنید:
python -m ensurepip
این دستور، ensurepip را فعال میکند و شما میتوانید بلافاصله از pip استفاده کنید.
get-pip.py
برای استفاده از get-pip.py ، ابتدا باید فایل get-pip.py را دانلود کنید. سپس، دستور زیر را در ترمینال یا خط فرمان وارد کنید تا pip نصب شود:
python get-pip.py
با اجرای این دستور، pip بر روی سیستم شما نصب خواهد شد.
پس از نصب pip، شما آماده استفاده از این ابزار قدرتمند برای مدیریت پکیجها و dependency در پروژههای پایتونی خود هستید.
مدیریت پکیجها با pip
در محیط توسعه ی پایتون، نیاز به مدیریت و نصب پکیجها برای پروژههای مختلف از اهمیت بالایی برخوردار است.
در ادامه، به چند مورد از دستورات مهم مدیریت پکیج با pip میپردازیم:
نصب پکیج جدید
برای نصب یک پکیج جدید، میتوانید از دستور زیر استفاده کنید. این دستور پکیج مورد نظر را از PyPI یا Python Package Index دانلود و نصب میکند. برای مثال:
pip install requests
این دستور پکیج requests را نصب میکند که برای ارسال درخواستهای HTTP در پایتون استفاده میشود.
به روزرسانی پکیج ها
pip install --upgrade requests
این دستور نسخه نصب شده فعلی requests را بررسی میکند و آن را به آخرین نسخه موجود در PyPI به روزرسانی میکند.
حذف پکیج ها
در صورت نیاز، میتوانید پکیجهای نصب شده را حذف کنید. برای این کار از دستور زیر میتوانید استفاده کنید:
pip uninstall requests
این دستور پکیج requests را از محیط پایتون شما حذف میکند.
مدیریت نسخههای پکیج ها
pip اجازه میدهد که نسخه خاصی از یک پکیج را مشخص و نصب کنید، برای مثال:
pip install requests==2.23.0
این دستور نسخه دقیق 2.23.0 از پکیج requests را نصب میکند. همچنین میتوانید از عملگرهای مقایسه ای برای مشخص کردن یک دامنه نسخههای مجاز استفاده کنید.
نمایش لیست پکیجهای نصب شده
برای مشاهده لیست کاملی از پکیج هایی که در محیط فعلی نصب شده اند، میتوانید از دستور زیر استفاده کنید:
pip list
ذخیره لیست پکیجها در فایل requirements.txt
استفاده از فایل requirements.txt برای ذخیره لیست پکیجهای نصب شده یک روش موثر برای به اشتراک گذاری و مدیریت وابستگیها در پروژه هاست. برای تولید این فایل از دستور زیر استفاده کنید:
pip freeze > requirements.txt
مدیریت وابستگی ها(depencies) با فایل requirements.txt
فایل requirements.txt در پروژههای پایتون یک ابزار مهم و کلیدی است که به خاطر ساده سازی محیطهای تست و کنترل نسخههای پکیجها و … در توسعه و تست نرم افزار کاربرد دارد. این فایل به توسعه دهندگان اجازه میدهد تا پکیجهای مورد نیاز یک پروژه را به طور دقیق مدیریت و هماهنگ کنند.
ساختار فایل requirements.txt
فایل requirements.txt یک فایل متنی است که استفاده از آن به برنامه نویسان اجازه میدهد تا پکیجهای لازم پروژه ی خود را به صورت مشخص و سازمان یافته تعریف کنند. این فایل شامل لیستی از پکیج هایی است که برنامه باید قبل از اجرا نصب کند. ساختار هر خط از این فایل به صورت زیر است:
package_name==version_number
در اینجا، package name نام بسته مورد نظر است و version_number نسخه ی مورد نظر آن بسته است. این نسخه میتواند به صورت دقیق (مانند 1.0.0) یا با استفاده از عملگرهای مقایسه ای (مانند >= 1.0.0) مشخص شود.
نمونه هایی از مشخص کردن وابستگیها در requirements.txt
در مواردی که نیاز است پروژههای توسعه یافته با نسخههای قدیمیتر یا جدیدتر از یک بسته سازگار باشند، میتوان از ترکیب محدودیتهای نسخه استفاده کرد. این روش به توسعه دهندگان امکان میدهد که به صورت دقیقتری کنترل کنند که کدام نسخهها باید نصب شوند تا از پایداری و سازگاری سیستم اطمینان حاصل شود.
تعیین نسخه دقیق یک بسته
برای تضمین سازگاری و پایداری پروژه، ممکن است لازم باشد که نسخه دقیق یک کتابخانه مشخص شود. به عنوان مثال، برای استفاده دقیق از کتابخانه numpy در نسخه 1.20.1، این مورد را به فایل requirements.txt خود اضافه میکنیم:
numpy==1.20.1
برای نصب نسخه ای بزرگتر یا مساوی از یک بسته
گاهی اوقات نیاز است که حداقل نسخه ای از یک کتابخانه نصب شود تا از ویژگیهای جدید آن استفاده کنیم. مثلاً برای نصب نسخه ای از pandas که حداقل 1.2.3 است:
pandas>=1.2.3
برای نصب نسخه ای کمتر یا مساوی از یک بسته
در مواردی که نمیخواهیم از نسخههای جدیدتر یک کتابخانه استفاده کنیم که ممکن است با سایر بخشهای پروژه سازگار نباشد، میتوانیم ماکزیمم نسخه مجاز را مشخص کنیم. برای مثال، برای محدود کردن کتابخانه matplotlib به نسخه 3.3.4 یا کمتر:
matplotlib<=3.3.4
نمونه ای از فایل requirements.txt برای پروژههای Django
در پروژههای پیچیدهتر مانند پروژههای مبتنی بر Django، معمولاً وابستگیهای چندگانه ای داریم که باید به دقت مدیریت شوند تا از هماهنگی بین کتابخانهها اطمینان حاصل شود. به عنوان مثال، فایل requirements.txt زیر وابستگیهای مورد نیاز برای یک پروژه Django را با دقت مشخص میکند:
در این فایل، ما نسخههای خاصی را برای Django و کتابخانههای مرتبط با آن مانند Django Rest Framework، Django Crispy Forms و Django Environ تعیین کرده ایم تا تضمین کنیم که تمام وابستگیها با هم سازگار هستند و پروژه بدون مشکل اجرا شود. این کار به مدیریت بهتر پروژه و کاهش احتمال بروز خطاها به دلیل ناسازگاریهای نسخه ای کمک میکند.
مدیریت محیطهای مجازی با pip و virtualenv
محیطهای مجازی در پایتون، ابزارهای حیاتی برای جداسازی پروژهها و مدیریت وابستگیهای بین آنها بدون دخالت در کتابخانههای سیستمی هستند. virtualenv یکی از این ابزارها است که به توسعه دهندگان اجازه میدهد تا نسخههای مختلف پایتون و کتابخانهها را در محیطهای جداگانه نگهداری کنند. استفاده از این ابزار، تداخل بین پکیجهای مختلف را کاهش میدهد و به افزایش پایداری و سازگاری پروژهها کمک میکند.
نصب virtualenv
برای شروع، ابتدا باید virtualenv را نصب کنید. virtualenv یک ابزار مستقل است که به شما امکان میدهد محیطهای پایتون مجازی ایجاد کنید. برای نصب این ابزار میتوانید از pip استفاده کنید:
pip install virtualenv
ایجاد یک محیط مجازی
پس از نصب virtualenv، یک محیط مجازی جدید با استفاده از دستور زیر ایجاد کنید:
virtualenv myenv
این دستور یک پوشه به نام myenv ایجاد میکند که شامل نسخه ای از پایتون و نسخه ای از pip است که به طور جداگانه از سایر پروژهها عمل میکنند.
فعال سازی محیط مجازی
برای استفاده از محیط مجازی، آن را با استفاده از دستور زیر فعال کنید. در ویندوز:
myenv\Scripts\activate
در macOS و Linux:
source myenv/bin/activate
پس از فعال سازی، هر دستور pip یا python که اجرا میکنید، فقط داخل این محیط مجازی اثر میگذارد و تاثیری بر سیستم عامل اصلی یا دیگر محیطها ندارد.
مزایای استفاده از محیطهای مجازی در توسعه پایتون
استفاده از محیطهای مجازی در توسعه نرم افزار پایتون یک رویکرد حیاتی است که تاثیرات مثبت گسترده ای بر فرآیندهای توسعه و تست دارد. این تکنیک به توسعه دهندگان اجازه میدهد که محیط هایی جداگانه برای پروژههای مختلف خود ایجاد کرده و به این ترتیب، نیازهای خاص هر پروژه را به طور دقیق برآورده سازند. در ادامه چند مزیت اصلی استفاده از این محیطها را میآوریم:
جداسازی وابستگی ها: هر پروژه میتواند وابستگیهای مخصوص به خود را داشته باشد که با استفاده از محیطهای مجازی به راحتی قابل مدیریت هستند. این امر از تداخل بین پروژهها جلوگیری میکند و اطمینان میدهد که هر پروژه با نسخههای دقیقی از کتابخانه هایی که نیاز دارد، کار میکند.
تسهیل در توسعه مستقل: با استفاده از محیطهای مجازی، توسعه دهندگان میتوانند بدون نگرانی از تغییرات محیط سیستمی یا اثرگذاری بر سایر پروژه ها، تغییرات را اعمال کنند. این امر به ویژه در توسعه و تست در محیط Local مفید است.
سهولت در استقرار و توسعه: محیطهای مجازی را میتوان به راحتی کپی کرد و بر روی سرورهای مختلف یا در کانتینرها استقرار داد.
معرفی جایگزینهای pip
هرچند که pip یکی از محبوبترین ابزارها برای مدیریت پکیجها در پایتون به شمار میرود، اما جایگزین هایی وجود دارند که میتوانند در شرایط خاص، گزینههای بهتری باشند. این جایگزینها میتوانند در مدیریت محیطها یا پکیج هایی با نیازهای خاص مزایای بیشتری ارائه دهند. در ادامه به معرفی برخی از این ابزارها میپردازیم:
Conda
ابزار مدیریت پکیج Conda، که در جامعه علم داده بسیار محبوب است، نه تنها پکیجهای پایتون بلکه کتابخانههای مورد نیاز سیستم عامل را نیز مدیریت میکند. Conda قابلیت ایجاد محیطهای مجازی مستقل را دارد و در مدیریت پکیج هایی که نیازمند کامپایلهای خاص پلتفرم هستند، عملکرد بهتری از خود نشان میدهد.
Poetry
Poetry یک ابزار مدیریت وابستگی برای پروژههای پایتون است که به طور خاص برای کمک به توسعه دهندگان در مدیریت وابستگیها به شکل منظمتر و مؤثرتر طراحی شده است. Poetry از فایلهای pyproject.toml برای تعریف وابستگیها استفاده میکند و قابلیت هایی مانند قفل کردن وابستگیها و ایجاد فایلهای قابل توزیع را دارد.
Pipenv
یک ابزار دیگر برای مدیریت وابستگیهای پایتون است که محیطهای مجازی را به صورت خودکار مدیریت و ایجاد میکند. این ابزار با استفاده از فایلهای Pipfile و Pipfile.lock به توسعه دهندگان امکان میدهد تا وابستگیهای پروژه را دقیقتر مدیریت کنند. Pipenv به طور خودکار وابستگیها را نصب و به روزرسانی میکند، و تضمین میکند که محیط توسعه همواره با محیط تولید همخوانی دارد.
PDM (Python Development Master)
PDM یکی از جدیدترین ابزارهای مدیریت بسته در پایتون است که تمرکز خود را بر استفاده از استاندارد `pyproject.toml` برای تعریف وابستگیها قرار داده است. این ابزار به طور خودکار محیطهای مجازی ایجاد میکند و امکان مدیریت پکیجها را فراهم میکند. PDM به دلیل امکانات پیشرفته و رابط کاربری ساده اش، به سرعت در بین توسعه دهندگان پایتون محبوبیت خوبی پیدا کرده است.
مقایسه ابزارهای مدیریت بسته در پایتون
انتخاب ابزار مناسب برای مدیریت بستهها در محیط توسعه اهمیت زیادی دارد. ابزارهایی مانند pip, Conda, Poetry, و Pipenv هر کدام ویژگیهای منحصر به فردی دارند که میتوانند بر اساس نیازهای پروژه مفید باشند.در جدول زیر، ما این ابزارها را از نظر برخی ویژگیهای مهم ررسی کرده ایم تا انتخاب مناسبتری برای نیازهای پروژههای پایتونی خود داشته باشید.
ویژگی
Pip
Conda
Poetry
Pipenv
Anaconda
PDM
مدیریت وابستگی ها
❌
✔️
✔️
✔️
✔️
✔️
مدیریت محیط مجازی
❌
✔️
✔️
✔️
✔️
✔️
پشتیبانی از فایل قفل
❌
❌
✔️
✔️
❌
✔️
پشتیبانی از PyPI
✔️
❌
✔️
✔️
❌
✔️
ادغام با پایتون
✔️
❌
✔️
✔️
❌
✔️
نصب بستههای غیر پایتونی
❌
✔️
❌
❌
✔️
❌
دستورات سفارشی
❌
✔️
✔️
✔️
✔️
✔️
سازگاری با سیستمهای مختلف
✔️
✔️
✔️
✔️
✔️
✔️
جمع بندی
در این مقاله، به بررسی جامع و دقیق ابزار pip در پایتون پرداختیم، ابزاری که نقش مهم در مدیریت پکیجها دارد و امکاناتی مانند نصب، به روزرسانی و حذف پکیجها را به کاربران ارائه میدهد. همچنین، توضیح دادیم که چگونه میتوان با استفاده از virtualenv، محیطهای مجازی را ایجاد و مدیریت کرد. علاوه بر این، جایگزین هایی چون Conda، Poetry و Pipenv را معرفی کردیم که میتوانند در شرایط خاص، گزینههای مفیدی باشند. دانش به دست آمده از این مقاله میتواند به توسعه دهندگان کمک کند تا با اطمینان و کارایی بیشتری پروژههای پایتونی خود را مدیریت و پیش برند.