PIP چیست؟ راهنمایی جامع برای مبتدیان

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 03 تیر 1398
دسته بندی ها : پایتون

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

Conda خود بخشی از Anaconda است که به عنوان یک پکیج کامل برای انجام کارهای مربوط به Data Science در پایتون از آن استفاده می‌شود. Conda مستقلا یک پکیج منیجر برای زبان‌های مختلف از جمله پایتون است.

Pipenv

Pipenv یکی دیگر از ابزارهای پکیج منیجر پایتون است که البته بدلیل داشتن قابلیت ساخت Virtual Env محبوبیت زیادی را نیز بدست آورده است. این ابزار به شما از طریق خود ایندکس pip در نصب پکیج‌ها کمک می‌کند.

Poetry

Poetry یکی دیگر از ابزارهایی است که تا حدی همان قابلیت‌های pipenv را در اختیار شما قرار می‌دهد. 

در پایان

در این مطلب آموزشی از وبسایت راکت سعی داشتیم تا شما را بهتر با pip آشنا کنیم و در مدیریت یکسری کارها از آن استفاده نماییم. برای ادامه فرایند یادگیری پایتون به شما پیشنهاد می‌کنم که دوره آموزشی پایتون در وبسایت راکت را مشاهده کنید.

منبع

مقالات پیشنهادی

  • Thonny: یک ادیتور پایتونی برای مبتدیان

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

    ارسطو عباسی
  • گیت برای مبتدیان

    اگر شما یک برنامه‌نویس تازه‌کار هستید، گیت را باید در لیست اولیت‌های خود برای یادگیری در نظر بگیرید. زمانی که وارد یک شغل در حوزه برنامه‌نویسی شوید، گ...

    ارسطو عباسی
  • تست واحد جاوااسکریپت برای مبتدیان

    تست‌های واحد یا Unit Test بخش‌هایی از یک کد را بررسی می‌کند این بررسی کردن برای اطمینان حاصل نمودن شما از اجرای درست کدها صورت می‌گیرد. این مورد در دن...

    ارسطو عباسی