# Python Package Index

Python Package Index, spesso abbreviato in PyPI e noto anche come Cheese Shop (un chiaro riferimento allo sketch " Cheese Shop " del Monty Python's Flying Circus ),   è un repository di pacchetti software scritti in Python. Una sorta di "libreria online" dove gli sviluppatori possono cercare, scaricare e condividere pacchetti Python. È analogo al repository CPAN per Perl  e al CRAN per R.
È gestito dalla Python Software Foundation e viene interrogato da vari gestori di pacchetti Python, tra cui pip, quale sorgente predefinita per i pacchetti e le loro dipendenze.
Al 6 maggio 2024, erano presenti più di 530.000 pacchetti Python.
PyPI ospita principalmente pacchetti "sdist" (source distribution) ovvero pacchetti di distribuzione del codice sorgente dei progetti Python. A fianco a questi sono presenti anche pacchetti "wheels" che riducono significativamente il tempo di installazione in quanto contengono file già compilati. Questo è particolarmente utile per pacchetti che richiedono compilazione da codice sorgente, come quelli con estensioni in C.
PyPI consente agli utenti di cercare pacchetti tramite parole chiave o tramite filtri basati sui loro metadati, come ad esempio la licenza software o la compatibilità con POSIX.
Ogni voce PyPI, memorizza il nome del pacchetto, i suoi metadati, lo storico delle versioni precedenti del pacchetto, eventuali componenti precompilati (ad esempio eventuali DLL Windows), nonché diversi formati per diversi sistemi operativi e versioni di Python.

## Storia

Il modulo Python Distribution Utilities (distutils) ha fatto la sua comparsa nel 2000, nove anni dopo la prima versione di Python nel febbraio 1991. L'obiettivo era quello di semplificare il processo di installazione di pacchetti Python di terze parti. Nello specifico venne introdotto all'interno della libreria standard Python 1.6.1 a settembre 2000 e nell'ottobre 2000 nella versione 2.0.
distutils metteva a disposizione solo gli strumenti per pacchettizzare il proprio codice Python e di raccogliere e distribuire metadati ma non offriva tutte le funzionalità necessarie per gestire progetti moderni, come la gestione di dipendenze complesse o la creazione di pacchetti wheel.
All'epoca, Python, non dispone di un catalogo centralizzato per i pacchetti su Internet e non esisteva uno standard per la loro distribuzione. A marzo 2001 naque PEP 241 (PEP, Python Enhancement Proposal) proprio per andare in questa direzione. Si tratta di una specifica formale che descrive il meccanismo per aggiungere metadati ai pacchetti software Python. In sostanza, definisce lo standard per fornire informazioni aggiuntive sui pacchetti, come l'autore, la versione, la licenza, i requisiti e una breve descrizione.
La proposta di creare un catalogo centralizzato completo, ospitato sul dominio python.org, arrivò a novembre 2002.
Il 16 aprile 2018, tutto il traffico PyPI ha iniziato a essere gestito da una piattaforma web più moderna: Warehouse. Il sito web legacy è stato disattivato alla fine di quel mese. Tutti i pacchetti esistenti sono stati migrati sulla nuova piattaforma mantenendone la cronologia.
Nel maggio 2023, la Python Software Foundation (PSF) ha affrontato una situazione delicata a seguito di una citazione in giudizio da parte del Dipartimento di Giustizia degli Stati Uniti che ha richiesto alla PSF i dati utente di cinque collaboratori di PyPI. La PSF, pur rispettando la legge e gli ordini del tribunale, ha espresso preoccupazione per la privacy dei suoi collaboratori dichiarando di aspettarsi un alto livello di privacy per i propri membri, ma di essere obbligata a cooperare con le autorità.