**نصب‌کننده بسته پایتون** (به انگلیسی: Python Installs Packages) (مخفف انگلیسی: *pip*) یک سامانه مدیریت بسته است که به زبان پایتون نوشته شده و برای نصب و مدیریت بسته‌های نرم‌افزاری مورد استفاده قرار می‌گیرد. این برنامه به یک مخزن آنلاین بسته‌های عمومی متصل می‌شود که فهرست بسته پایتون (PyPI) نامیده می‌شود. پیپ همچنین می‌تواند پیکربندی شود تا به مخازن بسته‌های دیگر (محلی یا از راه دور) متصل شود، مشروط بر اینکه آنها با پیشنهاد توسعه پایتون ۵۰۳ مطابقت داشته باشند.

اگر پایتون ۲ دارید، نسخه ۲٫۷٫۹ و بالاتر و اگر پایتون ۳ دارید، نسخه ۳٫۴ و بالاتر پیپ را به‌طور خودکار دارند.

پیشینه
------

برای اولین بار به عنوان پای‌اینستال در سال ۲۰۰۸ توسط یان بیکینگ (خالق بسته ویرتوالنو) به عنوان جایگزینی برای ایزی‌اینستال معرفی شد، پیپ به عنوان نام جدید از میان چندین پیشنهاد که سازنده در پست وبلاگ خود دریافت کرده بود ، انتخاب شد. به گفته خود بیکینگ، این نام مخفف بازگشتی "Python Installs Packages" است. در سال ۲۰۱۱، سازمان بسته‌بندی پایتون (PyPA) ایجاد شد تا تعمیر و نگهداری پیپ و ویرتوالنو را به رهبری کارل مایر، برایان روزنر و یانیس لیدل، با کمک بیکینگ انجام دهد.

با انتشار پیپ نسخه ۶٫۰ (۲۰۱۴-۱۲-۲۲)، فرایند نامگذاری نسخه تغییر کرد و دارای نسخه X.Y بود و نسخه قبلی از فهرست نسخه‌ها حذف شد.

رابط خط فرمان
-------------

خروجی `pip install virtualenv`
یکی از مزایای اصلی پیپ سادگی رابط خط فرمان آن است که نصب بسته‌های نرم‌افزاری پایتون را به آسانی به عنوان صدور فرمان آسان می‌کند:

```
pip install some-package-name

```

همچنین می‌توان بسته را به‌راحتی حذف کرد:

```
pip uninstall some-package-name

```

مهمتر از همه، پیپ دارای ویژگی ای برای مدیریت لیست کامل بسته‌ها و شماره‌های نسخه مربوط است که ممکن است از طریق یک فایل "لازم" امکان‌پذیر باشد. این امکان ایجاد مجدد کارآمد یک گروه کامل از بسته‌ها در یک محیط جداگانه (به عنوان مثال رایانه دیگر) یا محیط مجازی را می‌دهد. این را می‌توان با یک فایل با فرمت مناسب و دستور زیر بدست آورد، که نام پرونده `Requist.txt` است:

```
pip install -r requirements.txt

```

برای نصب بسته‌ای برای نسخه خاص پایتون، pip دستور زیر را ارائه می‌دهد، که در آن `${version}` با ۲، ۳، ۳٫۴ و غیره جایگزین می‌شود:

```
pip${version} install some-package-name

```

به‌طور کلی، دستورهای ذکر شده، بخش مهمی از روش کار با pip را توضیح می‌دهند. چرا که این دستورها عمومی‌ترین دستورها در pip هستند و بخش عمدهٔ مدیریت بسته را انجام می‌دهند. در این کنار، دستورهای دیگری هم در pip هستند که نقش جانبی را در مدیریت بسته ایفا می‌کنند:

| نام دستور | توضیحات |
| --- | --- |
| `download` | دانلود بستهٔ مورد نطر کاربر بر روی سیستم |
| `freeze` | اطلاع‌رسانی ورژن بسته‌های نصب شده به کاربر |
| `list` | نمایش تمامی بسته‌های نصب شده در قالب یک لیست |
| `show` | نمایش اطلاعاتی مختصر راجع به بستهٔ مورد نظر |
| `check` | اطلاع‌رسانی در صورت ناسازگاری بسته‌ای با بسته‌های وابسته اش |
| `config` | مدیریت پیکر بندی‌های لوکال و گلوبال |
| `wheel` | ساخت بسته‌های ویل بر اساس یک فایل نیازها (از نوع txt.) |
| `debug` | نمایش اطلاعات مفید جهت عیب زدایی در مدیریت بسته |
| `search` | جستجو در میان بسته‌های موجود در PyPi |
| `help` | نمایش دستورها و گزینه‌ها |

### استفاده کردن از setup.py

پیپ راهی برای نصب پروژه‌های تعریف شده توسط کاربر به صورت محلی با استفاده از فایل setup.py ارائه می‌دهد. این روش مستلزم آن است که پروژه پایتون دارای ساختار فایل زیر باشد:

```
example_project/
├── exampleproject/ Python package with source code.
| ├── __init__.py Make the folder a package.
| └── example.py Example module.
└── README.md README with info of the project.
```

در این ساختار، کاربر می‌تواند setup.py را با محتوای زیر به ریشه پروژه (به عنوان مثال `example_project` برای ساختار بالا) اضافه کند:

```
from setuptools import setup, find\_packages

setup(
    name='example',  # Name of the package. This will be used, when the project is imported as a package.
    version='0.1.0',
    packages=find\_packages(include=['exampleproject', 'exampleproject.\*'])  # Pip will automatically install the dependences provided here.
)

```

پس از این، پیپ می‌تواند این پروژه سفارشی را با اجرای دستور زیر، از فهرست اصلی پروژه نصب کند:

```
pip install -e .

```

جستارهای وابسته
---------------

* مدیریت بسته ان‌پی‌ام - نود جی‌اس

پانویس
------

1. ↑  Release 1.0
2. ↑  "Changelog - pip documentation v21.1.1". *pip.pypa.io*. Retrieved 2021-05-02.
3. ↑  "Release history of pip on the Python Package Index (PyPI)". *pypi.org*. Retrieved 2021-05-02.
4. ↑  "pip/LICENSE.txt". *Github*. 17 April 2018. Archived from the original on 1 June 2018. Retrieved 1 June 2018.
5. ↑  Kollár, László. "Managing Python packages the right way". *Opensource.com* (به انگلیسی). Red Hat. Retrieved 23 June 2019.
6. ↑  "Python Enhancement Proposal 503". *python.org*.
7. ↑  "pip install command line documentation". *pip.pypa.io*.
8. ↑  "pip installation". Retrieved 24 Feb 2015.
9. ↑  Bicking, Ian (24 September 2008). "pyinstall: A New Hope". Archived from the original on 27 September 2008. Retrieved 4 March 2020.
10. 1 2  "Packaging History". *Python Packaging Authority*. Retrieved 4 March 2020.
11. ↑  Bicking, Ian (1 October 2008). "pyinstall pybundles". Archived from the original on 21 June 2020. Retrieved 4 March 2020.
12. ↑  Bicking, Ian (28 October 2008). "pyinstall is dead, long live pip!". Archived from the original on 21 June 2020. Retrieved 4 March 2020.
13. ↑  "pip documentation". The pip developers. Retrieved 5 January 2012.
14. ↑  Gahlot, Gaurav (6 November 2018). "Most Important *pip* Commands for a Python Developer - DZone Open Source". *dzone.com* (به انگلیسی). Retrieved 23 June 2019.

پیوند به بیرون
--------------

* وبگاه رسمی
* سازمان بسته‌بندی پایتون