PIP یک مدیریت پکیج استاندارد برای پایتون است. PIP به شما امکان نصب و مدیریت پکیجهای خارجی را میدهد. منظور از پکیجهای خارجی، پکیجهایی هستند که در خود پایتون پیادهسازی نشده و بخشی از کتابخانههای استاندارد پایتون نیستند.
در این مطلب آموزشی قصد داریم به شما موارد زیر را آموزش دهیم:
- شیوه نصب پکیجها
- پیدا کردن پکیجها در PyPI
- مدیریت نیازمندیهای یک اسکریپت یا اپلیکیشن
- حذف پکیجها
شروع کار با PIP
همانطور که گفته شد PIP یک سیستم برای مدیریت پکیج است. این بدان معناست که شما از طریق این ابزار میتوانید به کتابخانههای اضافی دسترسی داشته باشید که در بخش کتابخانههای استاندارد پایتون وجود ندارند.
قبل از پایتون ۳.۴ و پایتون ۲.۷ PIP بخشی مستقل به حساب میآمد، اما اگر حال پایتون را به صورت کامل نصب کنید، خواهید دید که pip بخشی از پکیج نصبی پایتون است.
اگر زبانهای دیگر را نیز مشاهده کنید خواهید دید که تقریبا هر زبان برای خود یک سیستم مدیریت پکیج مستقل دارد. جاوااسکریپت از NPM، روبی از gem و .NET از NuGet بهره میگیرد.
اگر از طریق فایل نصبی اقدام به نصب کردن پایتون کرده باشید در حال حاضر باید pip را روی سیستم خودتان داشته باشید. در غیر اینصورت باید آن را نصب کنید. با استفاده از دستور زیر از وجود pip و نسخه آن مطلع شوید:
pip --version
اگر از ویندوز استفاده میکنید، کار با pip موردی ندارد اما اگر از مک و لینوکس استفاده میکنید برای کار با پکیج منیجر پایتون نسخه ۳ باید از pip3 استفاده نمایید. از آنجایی که در ویندوز نسخه پیشفرض پایتون ۲ وجود ندارد، چنین کاری الزامی نیست.
ما ادامه روند آموزشی را بر این اساس جلو میبریم که شما از ویندوز استفاده میکنید، بنابراین ما هم در اینجا با pip3 کاری نخواهیم داشت. اما به یاد داشته باشید که ما با پایتون ۳ کار میکنیم.
نصب پکیج با استفاده از pip
پایتون زبانی است که به صورت Batteries Included طراحی شده است. این بدان معناست که گستره بزرگی از ابزارها در این زبان وجود دارد که شما را برای ساخت یک اپلیکیشن، در استفاده کردن از ابزارهای دیگر بی نیاز میکند.
اما در حالیکه پایتون شامل ابزارهای استاندارد داخلی بسیار زیادی میشود، بدین معنا نیست که جامعه کاربری نشسته و صرفا از این ابزارها استفاده میکنند. خیر، پایتون جامعه کاربری و توسعهدهندگان بسیار بزرگ و فعالی دارد. این جامعه تا به حال کتابخانهها و ابزارهای بسیار زیادی را توسعه دادهاند که میشود به آنها از طریق PyPI (تلفظ درست پای پی آی) دسترسی پیدا کرد.
برای کار با دستور pip و نصب یک پکیج بیایید ابتدا با آرگومانهای دستور pip آشنا شویم:
اگر قصد آن را داشته باشید که ابتدا یکسری اطلاعات در ارتباط با ورودیهای pip را مشاهده کنید میتوانید آرگومان help را وارد کنید:
pip help
در خروجی این دستور، گزینههای متعددی وجود دارد که هر کدام همراه با توضیحاتی ارائه شدهاند. همانطور که مشاهده میکنید یکی از دستورات install نام دارد که به ما در نصب کردن یک پکیج کمک میکند.
به عنوان یک مثال ما قصد داریم تا پکیج requests را نصب بکنیم. برای انجام چنین کاری تنها کافیست دستور pip install requests را وارد نماییم.
بعد از انجام این کار شما باید منتظر نصب کامل این کتابخانه شوید.
حال برای آنکه مطمئن شوید که این ابزار نصب شده میتوانید دستور pip list را وارد کنید. این دستور لیستی از تمام پکیجها همراه با نسخهی آنها را برای شما تهیه میکند.
برای آنکه اطلاعات منحصر به فردی را از یک ابزار تهیه کنید میتوانید pip show را استفاده کنید. برای مثال:
$ pip show requests
Name: requests
Version: 2.21.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: py37\lib\site-packages
Requires: certifi, chardet, idna, urllib3
Required-by:
گاهی اوقات در پایان فرایند نصب یک پکیج، pip به شما میگوید که نسخه جدیدتری برای pip وجود دارد که شما از آن استفاده نمیکنید. اگر قصد بروزرسانی پکیج منیجر pip را دارید کافیست دستور زیر را وارد کنید:
python -m pip install --upgrade pip
منظور از آرگومان -m این است که یک ماژول را به عنوان یک برنامه اجرایی، اجرا کن! استفاده از این آرگومان ضروریست چرا که برای ارتقا pip شما باید نسخه قدیمی را حذف و نسخه جدید را نصب کنید. حال چگونه میشود که برنامهای را حذف کنید در حالی که از آن استفاده میکنید؟
زمانی که شما pip را به عنوان یک ماژول اجرا میکنید، برنامه در حافظه RAM قرار میگیرد. بنابراین در فرایند حذف و نصب pip به آن آسیبی نمیرسد.
استفاده از فایل نیازمندیها
زمانی که یک پروژه را برای اجرا به یک فرد ارسال میکنید، ممکن است پکیجهای مورد نظر برای اجرا پروژه شما روی کامپیوتر آن فرد وجود نداشته باشد. یا اگر هم باشد دقیقا آن نسخهای نباشد که برای اجرا مورد نیاز است. به همین خاطر بهتر است که یک فایل نیازمندیها را در کنار پروژههای تان برای آن فرد ارسال کنید.
برای ساختن فایل نیازمندیها ما از دستور freeze استفاده میکنیم:
pip freeze > requirements.txt
با این کار موارد مورد نیاز برای اجرای پکیج در requirements.txt ذخیره میشود.
حال اگر آن فردی که پروژه برایش ارسال میشود خود شما باشید چه؟ شاید بگویید:«خب فایل متنی رو باز میکنم و دونه به دونه همه پکیجها رو دستی نصب میکنم.» خب شاید در نهایت به جواب برسید اما آیا واقعا این کاریست که میخواهید انجام دهید؟ نصب دهها پکیج به صورت دستی؟ نیازی به چنین کاری نیست. میتوانید از طریق دستور pip install با آرگومان -r تمام محتویات فایل requirements.txt را نصب کنید:
pip install -r requirements.txt
بروزرسانی نیازمندیها
گاهی اوقات پیش خواهد آمد که پکیجهای نیازمندی شما بسیار قدیمی شدهاند و نمیشود از آنها در محیط اجرایی به خوبی استفاده کرد. اگر میخواهید فایل نیازمندی با قابلیت بروزرسانی به نسخههای جدیدتر را داشته باشد میتوانید از سینتکس زیر استفاده کنید:
certifi>=2018.11.29
chardet>=3.0.4
idna>=2.8
requests>=2.21.0
urllib3>=1.24.1
با استفاده از عملگر منطقی =< به pip میگویید که اگر نسخه بالاتری از این نسخه وجود دارد از آن استفاده کند در غیر اینصورت همین نسخه را نصب کند.
اگر فایل نیازمندیها چنین قابلیتی را در خود نداشت و شما قصد داشتید تا آخرین نسخهها از نیازمندیها را نصب کنید، کافیست دستور upgrade را وارد نمایید:
pip install --upgrade -r requirements.txt
اما این نکته را در نظر داشته باشید که گاهی اوقات بروزرسانی یک پکیج باعث میشود که کل اپلیکیشن از کار بیافتد. به همین خاطر سعی کنید در بروزرسانیها کمی محتاطانهتر عمل کنید. برای اینکار میتوانید از عملگر کوچکتر و بزرگتر برای نسخهبندی پکیجها نیز استفاده کنید. برای مثال:
certifi>=2018.11.29
chardet>=3.0.4
idna>=2.8
requests>=2.21.0, <3.0
urllib3>=1.24.1
در این حالت تنها نسخههایی از پکیج requests بروزرسانی میشود که از نسخه ۳ کمتر و از نسخه ۲.۲ بیشتر باشد.
نیازمندیهای توسعه در مقابل نیازمندیهای اجرا
گاهی اوقات نیازمندیهایی وجود دارند که صرفا در روند توسعه استفاده میشوند و در زمان اجرا کاربردی ندارند. برای مثال فرایند تستینگ را در نظر بگیرید. ما تنها از امکانات تستینگ در زمان توسعه بهره میگیریم، دیگر چه نیازی هست که پکیج های مربوط به آن را در فایل نیازمندیهای اجرا قرار دهیم؟ حق با شماست. اما اگر پروژه را برای فرد دیگری ارسال میکنید که قرار است روی پروژه کار بکند، بهتر است یک فایل نیازمندیهای توسعه با نام requirements_dev.txt را نیز اجرا کنید.
من برای تستینگ از pytest استفاده میکنم، از این رو همواره برای پروژهها یک requirements_dev.txt ایجاد کرده و نام pytest و نسخه استفاده شده را قرار میدهم:
# In requirements_dev.txt
pytest>=4.2.0
معرفی وبسایت PyPI
زمانهایی وجود دارد که قصد گشتن به دنبال یک پکیج و پیدا کردن مشخصات دقیق در رابطه با آن را دارید. در چنین حالتی PyPI میتواند کمکی مناسب برای شما باشد.
در این وبسایت یک قسمت جستجو همراه با فیلترهای مختلفی وجود دارد که به شما در پیدا کردن ابزار مورد نیاز کمک میکند.
حذف پکیجها
برای حذف کردن یک پکیج میتوانید به سادگی تنها از uninstall استفاده کنید. برای مثال:
pip uninstall certifi
در چنین حالتی از شما برای تایید حذف کردن میخواهد که y را وارد کنید. اگر نمیخواهید این قسمت تایید کردن انجام شود میتوانید آرگومان -y را در آخر به دستور اضافه کنید:
pip uninstall certifi -y
حتی میتوانید کتابخانههای نیازمندی را که از طریق فایل متنی requirements.txt نصب کردید، به صورت یکجا حذف نمایید. برای اینکار:
pip uninstall -r requirements.txt -y
جایگزینهایی برای pip
pip ابزاری لازم و بسیار مهم است که در اختیار توسعهدهندگان پایتونی قرار گرفته، اما در کنار آن ابزارهایی نیز وجود دارد که نقش پکیج منیجر را برای پایتون بازی میکنند.
Conda خود بخشی از Anaconda است که به عنوان یک پکیج کامل برای انجام کارهای مربوط به Data Science در پایتون از آن استفاده میشود. Conda مستقلا یک پکیج منیجر برای زبانهای مختلف از جمله پایتون است.
Pipenv
Pipenv یکی دیگر از ابزارهای پکیج منیجر پایتون است که البته بدلیل داشتن قابلیت ساخت Virtual Env محبوبیت زیادی را نیز بدست آورده است. این ابزار به شما از طریق خود ایندکس pip در نصب پکیجها کمک میکند.
Poetry
Poetry یکی دیگر از ابزارهایی است که تا حدی همان قابلیتهای pipenv را در اختیار شما قرار میدهد.
در پایان
در این مطلب آموزشی از وبسایت راکت سعی داشتیم تا شما را بهتر با pip آشنا کنیم و در مدیریت یکسری کارها از آن استفاده نماییم. برای ادامه فرایند یادگیری پایتون به شما پیشنهاد میکنم که دوره آموزشی پایتون در وبسایت راکت را مشاهده کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید