**pip** on Pythonis kirjutatud paketihaldur Pythoni pakettide jaoks. pip-iga paigaldatakse Pythoni pakette. Pip tuleb Pythoniga vaikimisi kaasa alatest Pythoni 3.4 versioonist. Pip hangib pakette kas kohaliku failisüsteemi kaustadest või repositooriumitest, mis vastavad PEP 503 lihtsa repositooriumi rakendusliidesele. Vaikimisi kasutatakse PyPI repositooriumi. Pip on siiani enimkasutatud Pythoni paketihaldur.

Ajalugu
-------

2008 tutvustas Ian Bicking (virtualenv paketi looja) paketihaldurit nimega pyinstall alternatiiviks olemasolevale paketihaldurile easy install. Tutvustavas blogipostitusele tulnud soovituste hulgast valiti pyinstalli uueks nimeks pip. Bickingu seletas selle nime lahti rekursiivse akronüümina "Pip Installs Packages". Aastal 2011 loodi organisatsioon Python Packaging Authority (PyPA), mis võttis üle pip ja virtualenv haldamise Bickingult. pip versiooniga 6.0 12.22.2014 muudeti pip versioonide nimekuju, eemaldades number 1 versiooninumbrist.

Käsurealiides
-------------

Pip'i käsurealiideselt Pythoni paketi paigalstamiseks kasuta käsku: `pip install paketi-nimi`

Paketi eemaldamiseks kasutades käsku: `pip uninstall paketi-nimi`

Pip saab hallata korraga tervet nimekirja pakettidest kasutades "requirements" faili. Requirements kirjeldab pakette ning nende versioone ning kasutades pipi saab kõik vajalikud paketid paigaldada korrektsete versioonidega näiteks teise arvutisse või virtuaalsesse keskkonda. 

Requirements.txt failis kirjeldatud pakettide paigaldamiseks käsurealt kasuta käsku `pip install -r requirements.txt`.

Pip paketi struktuur
--------------------

Ise pip-iga paigaldatava paketi loomiseks tuleb kasutada ettenähtud struktuuri:

```
example_project/
├── exampleproject/      Pythoni paketi lähtekood
|    ├── __init__.py    
|    └── example.py
├── setup.py             pip-i paketti kirjeldav python
└── README.md            Tekstifail, mis kirjeldab projekti
```

Setup.py sisu on järgmine

```
from setuptools import setup, find\_packages

setup(
    name='example',  # Paketi nimi. Seda kasutatakse, kui projekt imporditakse paketina.
    version='0.1.0',
    packages=find\_packages(include=['exampleproject', 'exampleproject.\*'])  # Pip installib automaatselt kõik siin välja toodud sõltuvused.
)

```
Kui see on tehtud, siis loodud paketi paigaldamiseks projekti juurkaustas kasutada järgnevat käsku: `pip install -e`.

Muude repositooriumite kasutamine
---------------------------------

Peale vaikimi määratud PyPI repositooriumi on võimalik pip-ga kasutada ka muid repositoorime. Selleks võib olla kas HTTP(S) URL või faili asukoht failisüsteemis.

Kasutamaks mõnda muud repositooriumit on vaja käsureal -i või -index-url parameetrit: `pip install -i https://sinu-muu-repositoorium/simple <paketi nimi>`; või kui kasutada failisüsteemi: `pip install -i /tee/sinu/muu/repositooriumini/simple <paketi nimi>`.

Vaata ka
--------

* Setuptools
* Pipenv
* Python Poetry
* Conda (package manager)
* PyPM - ActiveState'

Viited
------

1. ↑  *pypa/pip*, Python Packaging Authority, 14. jaanuar 2024, vaadatud 14. jaanuaril 2024
2. ↑  "Installing Python Modules". *Python documentation*. Vaadatud 14. jaanuaril 2024.
3. ↑  "pip install - pip documentation v23.3.2". *pip.pypa.io*. Vaadatud 14. jaanuaril 2024.
4. ↑  "Topp Engineering » pyinstall: A New Hope". *web.archive.org*. 27. september 2008. Vaadatud 14. jaanuaril 2024.
5. ↑  "Packaging History — PyPA documentation". *www.pypa.io*. Vaadatud 14. jaanuaril 2024.
6. ↑  "pyinstall is dead, long live pip!". *ianbicking.org*. Vaadatud 14. jaanuaril 2024.
7. ↑  "Changelog - pip documentation v23.3.2". *pip.pypa.io*. Vaadatud 14. jaanuaril 2024.
8. ↑  "pip documentation v23.3.2". *pip.pypa.io*. Vaadatud 14. jaanuaril 2024.
9. ↑  ""pip" Commands for Python Developers - DZone". *dzone.com* (inglise). Vaadatud 14. jaanuaril 2024.
10. ↑  Geer, Rogier van der (25. märts 2019). "A Practical Guide to Using Setup.py". *Xebia* (inglise). Vaadatud 14. jaanuaril 2024.
11. ↑  "Pip Install: How To Install and Remove Python Packages". *Python Land* (Ameerika inglise). 30. mai 2023. Vaadatud 14. jaanuaril 2024.