#format wiki
#language it
<
>
<>
<>
= Introduzione =
In questa guida sono descritte le istruzioni per installare '''pip''' su Ubuntu e derivate, nonché nozioni generali sul suo utilizzo (per informazioni più specifiche si rimanda ai [[#risorse|link]] di approfondimento).
'''pip''' (acronimo di '''Pip Installs Packages''') è uno strumento a linea di comando che permette di installare software scritto in '''[[Programmazione/Python|Python]]'''.<
>
Risulta quindi molto utile per reperire facilmente moduli, librerie, frameworks, strumenti per sviluppo software, ricerca scientifica, svago e tanto altro. I pacchetti vengono reperiti da '''PyPI''' ('''Python Package Index'''). Quest'ultimo è un repository globale dove vengono archiviati migliaia di progetti e programmi relativi a Python, per essere quindi gestiti e organizzati in base alle versioni dei pacchetti e alle loro dipendenze.
{{{#!wiki tip
Spesso alcuni pacchetti di cui si potrebbe aver bisogno sono disponibili nei [[Repository|repository]] di Ubuntu. Si consiglia pertanto di effettuare prima di tutto una [[AmministrazioneSistema/InstallareProgrammi/Apt#Altre_operazioni|ricerca]] tramite '''apt'''.
}}}
== Python virtual environments ==
'''pip''' potrebbe essere usato per installare alcuni programmi scritti in Python come alternativa alle consuete modalità di installazione (apt, snap, da sorgenti ecc.). Tuttavia, essendo molte parti delle distribuzioni GNU/Linux scritte in Python (fra cui componenti importanti del sistema), l'utilizzo di versioni diverse di pacchetti e librerie potrebbe rendere il sistema altamente instabile o non funzionante.<
>
A tal riguardo è previsto l'utilizzo di ambienti protetti, i '''[[#venv|Python virtual environments]]'''. Questi sono ambienti virtuali isolati e indipendenti, in cui è possibile operare con pacchetti Python specifici, senza influenzare il sistema operativo o altri progetti.
Gli ambienti virtuali comportano anche altri vantaggi:
* possono far coesistere in maniera separata svariati progetti, ognuno con le proprie dipendenze e con versioni specifiche di pacchetti;
* permettono di operare in sicurezza con versioni diverse di librerie e pacchetti disponibili con '''pip''' ma non fornite dal sistema operativo;
* migliorano la prestazioni, poiché il sistema operativo non deve caricare più volte gli stessi moduli e librerie di Python;
* contribuiscono a mantenere ordinati i vari progetti, migliorando quindi la qualità di questi ultimi e la produttività.
A tal proposito in Ubuntu 23.04 e successivi non sono consentite installazioni di pacchetti Python a livello di sistema (per maggiori informazioni si veda questo [[#problemi|paragrafo]]).
<>
= Creazione di un ambiente virtuale =
Per creare un ambiente virtuale, procedere come descritto di seguito.
0. Aggiungere il modulo `venv`, [[AmministrazioneSistema/InstallareProgrammi|installado]] il pacchetto [[apt://python3-venv|python3-venv]].
0. Per creare una cartella di destinazione digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
python3 -m venv nome_della_directory
}}}
sostituendo `nome_della_directory` con il nome desiderato.
0. Attivare l'ambiente virtuale con il comando:{{{
source nome_della_directory/bin/activate
}}}
sostituendo `nome_della_directory` con il nome desiderato.
Una volta attivato, la shell in uso punterà alla cartella creata. Se ad esempio si crea la cartella `il_mio_progetto` verrà restituito un output simile al seguente:{{{
(il_mio_progetto) $
}}}
Sarà quindi possibile installare e aggiornare pacchetti utilizzando '''pip'''.
= Installazione =
0. Verificare la versione di Python installata e l'assenza di problemi digitando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
python3 --version
}}}
L'output sarà simile al seguente:{{{
Python 3.10.12
}}}
0. In caso di assenza di errori, [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://python3-pip|python3-pip]].
0. Per verificare la versione di '''pip3''' installata digitare:{{{
pip3 --version
}}}
{{{#!wiki note
In Ubuntu 22.04 è disponibile per l'installazione anche il pacchetto ''python-pip'', di riferimento per Python2. Si raccomanda tuttavia l'utilizzo della versione 3, poiché per la versione precedente non sono garantiti aggiornamenti di sicurezza (per maggiori informazioni consultare [[Programmazione/Python#Python_2_e_3|questa pagina]]).
In caso di utilizzo di pip con Python 2, tutti i comandi vanno eseguiti digitando `pip` al posto di `pip3`.
}}}
= Utilizzo =
||<:-2>'''Comandi principali'''||
||<40%> '''pip3 install''' ''nome_pacchetto'' || Installa un pacchetto desiderato. ||
|| '''pip3 install --upgrade''' ''nome_pacchetto'' || Aggiorna un pacchetto desiderato. ||
|| '''pip3 uninstall''' ''nome_pacchetto'' || Rimuove un pacchetto desiderato. ||
|| '''pip3 show''' ''nome_pacchetto'' || Mostra le informazioni disponibili su un pacchetto installato. ||
|| '''pip3 list''' || Elenca i pacchetti installati. ||
|| '''pip3 freeze''' || Elenca i pacchetti installati nei formati richiesti. ||
|| '''pip3 check''' || Controlla lo stato delle dipendenze dei pacchetti installati. ||
|| '''pip3 help''' || Mostra informazioni sull'uso di pip, fra cui l'elenco dei principali comandi e delle opzioni. ||
{{{#!wiki note
Per l'utilizzo delle opzioni, del file `requirements.txt`, di wheel, delle configurazioni avanzate e altre funzionalità si rimanda a [[https://pip.pypa.io/en/latest/reference/|questa guida]].
}}}
{{{#!wiki important
A differenza di apt, pip non supporta l'autocompletamento. Pertanto occorre digitare il nome esatto del pacchetto da installare, facendo attenzione ad evitare errori di battitura durante la digitazione.<
>
Evitare di lanciare pip con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]].
}}}
Di seguito sono riportati ulteriori esempi di utilizzo:
* Installare specifiche versioni dei pacchetti:{{{
pip3 install nome_pacchetto==N
}}}
dove `N` sta per la versione del pacchetto, come nel seguente esempio:{{{
pip3 install Django==4.1.7
}}}
oppure versioni inferiori/superiori/uguali ad una specifica versione, come nel seguente esempio:{{{
pip3 install Django>=4.1.1
}}}
* Installare versioni in sviluppo:{{{
pip3 install --pre nome_pacchetto
}}}
* Installare un pacchetto salvato in locale:{{{
pip3 install ./Percorso/File/nome_pacchetto.tar.gz
}}}
* Mostrare in una lista incolonnata i pacchetti che hanno versioni più recenti rispetto a quelle presenti nel sistema:{{{
pip3 list --outdated --format columns
}}}
* Mostrare informazioni sull'utilizzo di un determinato comando:{{{
pip3 -h
}}}
come nel seguente esempio:{{{
pip3 list -h
}}}
= Aggiornamento =
{{{#!wiki important
Questa operazione è fortemente sconsigliata agli utenti poco esperti, poiché potrebbe rendere non utilizzabile pip senza opportune modifiche alle configurazioni del programma. Per lo stesso motivo è opportuno ignorare eventuali consigli di aggiornamento nell'ouput di pip, simili al seguente: `You should consider upgrading via the 'pip install --upgrade pip' command`.
}}}
Per aggiornare '''pip''' digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
pip3 install --upgrade pip
}}}
<>
= Soluzione dei problemi =
== error: externally managed environment (Ubuntu 23.04 e successivi) ==
A partire da Ubuntu 23.04 non sono consentite di default operazioni al di fuori dell'ambiente base di Python, considerate perciò ''externally managed'' (per maggiori informazioni consultare [[https://peps.python.org/pep-0668/|questa pagina]]).
Se non è possibile utilizzare un [[#venv|ambiente virtuale]], è possibile aggirare questa limitazione:
* installando il pacchetto desiderato tramite '''apt''', quando disponibile.
* utilizzando '''pipx''': è uno strumento alternativo a '''pip''' che permette di installare ed eseguire applicazioni Python in ''isolated environments'', garantendo una certa sicurezza. '''pipx''' infatti crea automaticamente un ambiente virtuale per ogni applicazione installata, generando contestualmente un collegamento nella cartella `.local/bin` dell'utente (quindi non a livello di sistema). Per utilizzare lo strumento [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://pipx|pipx]]. Per il suo utilizzo consultare la [[https://pypa.github.io/pipx/docs/|documentazione]] del progetto.
* usando l'opzione '''--break-system-packages''': è un'opzione che permette a '''pip''' di forzare l'installazione a livello di sistema, come nel seguente esempio:{{{
pip install arrow --break-system-packages
}}}
{{{#!wiki important
Questa opzione è potenzialmente pericolosa; __non__ usarla in ambienti di produttività se non si sono adottate le dovute precauzioni.
}}}
<>
= Ulteriori risorse =
* [[https://pip.pypa.io|Sito e documentazione ufficiali del progetto]]
* [[https://en.wikipedia.org/wiki/Pip_(package_manager)|Voce enciclopedica]]
* [[https://github.com/pypa/pip|GitHub]]
* [[https://pypi.org/|Python Package Index (PyPI)]]
* [[https://pypa.github.io/pipx/|pipx]]
* [[Programmazione/Python|Python]]
----
CategoryProgrammazione