Indice
Pip (gestore pacchetti)
pip software | |
---|---|
Output di pip --help
| |
Genere | Sistema di gestione dei pacchetti |
Sviluppatore | Ian Bicking |
Data prima versione | 28 ottobre 2008 [1] |
Ultima versione | 24.3 (27 ottobre 2024) |
Sistema operativo | Multipiattaforma |
Licenza | Licenza MIT [2] (licenza libera) |
Sito web | pip.pypa.io/ |
Pip Installs Packages in sigla pip (o pip3 dalla versione 3 di Python) è uno strumento a linea di comando fondamentale nell'ecosistema Python. La sua funzione primaria è quella di gestire l'installazione, l'aggiornamento e la rimozione di pacchetti Python, ovvero di quelle librerie e moduli aggiuntivi che estendono le funzionalità di base del linguaggio.[3]
E' lo strumento raccomandato dalla Python Software Foundation per l'installazione delle applicazioni Python e delle relative dipendenze.[4] Pip accede al Python Package Index un repository di pacchetti software scritti in Python dove gli sviluppatori possono cercare, scaricare e condividere pacchetti. Pip può anche essere configurato per connettersi ad altri repository (locali o remoti), a condizione che siano conformi alla Python Enhancement Proposal 503 [5][6] che definisce un'interfaccia semplice e standardizzata per i repository di pacchetti.
La maggior parte delle distribuzioni Python hanno pip preinstallato. Python 2.7.9 e versioni successive (per quanto riguarda la serie python2) e Python 3.4 e versioni successive includono pip per impostazione predefinita.[7]
Storia
[modifica | modifica wikitesto]Pip è stato introdotto come pyinstall nel 2008 da Ian Bicking, creatore di virtualenv, quale alternativa a easy_install.[8][9] Il nome "pip" è stato scelto tra una serie di suggerimenti ricevuti dal creatore stesso attraverso il suo blog.[10] "Pip" è l'acronimo ricorsivo per "Pip Installs Packages".[11]
Nel 2011, è stata creata la Python Packaging Authority (PyPA) da Bicking, guidata da Carl Meyer, Brian Rosner e Jannis Leidel.[9]
L'obiettivo della PyPA è quello di supervisionare e migliorare gli strumenti e le infrastrutture di packaging di Python. Tra gli scopi della PyPa ci sono quelli di standardizzare la distribuzione e l'installazione di pacchetti Python anche attraverso le Proposte di Miglioramento di Python (PEP) che regolano i formati di packaging e le API.
La Python Packaging Authority (PyPA) sviluppa e mantiene strumenti essenziali per il packaging, come pip, setuptools e il formato wheel.
Con il rilascio della versione 6.0 di pip (22 dicembre 2014) è stato modificato il processo di denominazione della versione passando dalla numerazione in stile X.Y.1
alla più semplice X.Y.
La nuova numerazione rende più evidente quando un aggiornamento introduce nuove funzionalità o comporta cambiamenti significativi.[12]
Interfaccia a riga di comando
[modifica | modifica wikitesto]L'interfaccia della riga di comando di pip consente l'installazione di pacchetti software Python attraversi uk comando: pip install nome-pacchetto
Gli utenti possono rimuovere il pacchetto con il comando: pip uninstall nome-pacchetto
pip consente di creare un elenco tutti i pacchetti Python e delle loro versioni specifiche necessari per un progetto. Una sorta di "ricetta" per ricostruire esattamente lo stesso ambiente Python su un altro computer o in un ambiente virtuale. Questo elenco prende il nome di 'requirements'.[13]
Tale file consente di ricreare rapidamente e in modo efficiente l'intero ambiente di pacchetti Python su un altro computer o in un ambiente virtuale.[14]
La generazione di tale file avviene tramite il comando: pip install -r requirements.txt
Per installare un pacchetto per una versione specifica di Python, pip fornisce il seguente comando, dove ${version}
viene sostituito da 2, 3, 3.4, ecc.: pip${version} install nome-pacchetto
Utilizzo setup.py
[modifica | modifica wikitesto]Pip consente l'installazione locale di progetti definiti dall'utente con l'uso di un file denominato setup.py. Questo metodo di installazione richiede che il progetto Python abbia la seguente struttura di file:
esempio_progetto/ ├── progetto_di_esempio/ Pacchetto Python con codice sorgente. | ├── __init__.py Imposta la cartella come pacchetto. | └── esempio.py Modulo di esempio. └── README.md README con informazioni sul progetto.
All'interno di questa struttura è possibile aggiungere un file setup.py
nella directory principale del progetto (progetto_di_esempio in questo caso) con il seguente contenuto:
from setuptools import setup, find_packages
setup(
name='esempio', # Nome del pacchetto. Questo sarà usato quando il progetto sarà importato come pacchetto.
version='0.1.0',
packages=find_packages(include=['progetto_di_esempio', 'progetto_di_esempio.*']) # Pip installerà automaticamente le dipendenze fornite qui.
)
Dopodiché, sarà possibile installare questo progetto personalizzato eseguendo il seguente comando dalla directory radice del progetto: pip install -e
.
Repository personalizzato
[modifica | modifica wikitesto]Oltre al repository PyPI è possibile gestire repository personalizzati.[15] Tali repository possono essere ubicati su un URL HTTP(s) o in una posizione del file system.
È possibile specificare un repository personalizzato utilizzando l'opzione -i o index-url, in questo modo: pip install -i https://repository_personale/esempio <package name>
; oppure con un file system: pip install -i /path/tuo/repository_personale/esempio <package name>
.
Vedi anche
[modifica | modifica wikitesto]- Conda (gestore pacchetti) per la distribuzione Anaconda
- PyPM - Gestore di pacchetti proprietario di ActiveState
Note
[modifica | modifica wikitesto]- ^ Pip 0.2, su PyPI. URL consultato il 27 agosto 2024.
- ^ pip/LICENSE.txt (TXT), su Github, 17 aprile 2018. URL consultato il 1º giugno 2018 (archiviato dall'url originale il 1º giugno 2018).
- ^ (EN) Opensource.com, https://opensource.com/article/19/4/managing-python-packages .
- ^ packaging.python.org, https://packaging.python.org/en/latest/guides/tool-recommendations/ . URL consultato il 9 novembre 2022.
- ^ python.org, https://www.python.org/dev/peps/pep-0503 .
- ^ pip.pypa.io, https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-0 .
- ^ pip.pypa.io, https://pip.pypa.io/en/latest/installing.html .
- ^ openplans.org, http://www.openplans.org/projects/topp-engineering/blog/2008/09/24/pyinstall-a-new-hope/ .
- ^ a b Python Packaging Authority, https://www.pypa.io/en/latest/history/ .
- ^ ianbicking.org, https://www.ianbicking.org/blog/2008/10/pyinstall-pybundles.html .
- ^ ianbicking.org, https://www.ianbicking.org/blog/2008/10/pyinstall-is-dead-long-live-pip.html .
- ^ pip.pypa.io, https://pip.pypa.io/en/stable/news/#id443 .
- ^ pip-installer.org, http://www.pip-installer.org/ .
- ^ (EN) Gaurav Gahlot, Most Important pip Commands for a Python Developer - DZone Open Source, su dzone.com, 6 novembre 2018. URL consultato il 23 giugno 2019.
- ^ python.land, https://python.land/virtual-environments/installing-packages-with-pip#Custom_repository_with_pip_install_-i .