====== Installazione librerie Python con PIP ======
PIP consente di installare automaticamente librerie aggiuntive Python qualora non siano presenti come pacchetto fornito dalla distribuzione (es. Debian GNU/Linux), oppure se è necessario una versione più aggiornata. PIP si preoccupa di:
* Scaricare l'archivio dal repository.
* Scaricare le eventuali dipendenze (altre librerie).
* Effettuare la compilazione, se necessario.
* Installare il necessario nelle directory di sistema o utente.
Debian consente di far convivere versioni di Python diverse sullo stesso sistema, ad esempio **Debian 9 Stretch** fornisce sia **Python 2.7.13** (predefinito) che **Python 3.5.3** (eseguibile lanciando il comando **python3**).
Le librerie aggiuntive vanno installate per la versione di Python che si desidera, lanciando **pip** oppure **pip3**. Tali comandi sono forniti rispettivamente dai pacchetti:
* **python-pip**
* **python3-pip**
===== Esempio libreria openpyxl =====
Su **Debian 9 Stretch** esiste il pacchetto **python-openpyxl 2.3.0**. Se si desidera una versione più recente è necessario anzitutto disinstallare il pacchetto Debian, altrimenti PIP si rifiuta di procedere con l'installazione:
pip install openpyxl
Requirement already satisfied: openpyxl in /usr/lib/python2.7/dist-packages
Requirement already satisfied: jdcal in /usr/lib/python2.7/dist-packages (from openpyxl)
Quindi si rimuove il pacchetto Debian:
dpkg --purge python-openpyxl
A questo punto si può fare l'installazione con PIP:
pip install openpyxl
Avendo eseguito l'operazione con l'**utente root**, l'installazione sarà //system wide//, cioè disponibile a tutti gli utenti di sistema. Infatti i file sono stati installati in **/usr/local/lib/python2.7/dist-packages/**.
==== Download senza installazione ====
È consigliabile **scaricare e salvare localmente** gli archivi di installazione, per poter ripetere l'installazione qualora il repository venga a mancare.
Per scaricare un archivio e le sue dipendenze senza installarle si può usare la seguente sintassi (valida con **pip versione 18.1**, incluso in Debain 10 Buster):
pip download openpyxl
Con versioni precedenti di pip il comando è diverso, ad esempio con **pip versione 1.5.6** incluso in Debian 8 Jessie:
pip install --download /usr/local/src openpyxl
Nel nostro caso sono stati scaricati tre archivi, uno della libreria vera e propria e due per dipendenza:
* **openpyxl-2.6.4.tar.gz**
* **et_xmlfile-1.0.1.tar.gz**
* **jdcal-1.4.1-py2.py3-none-any.whl**
Questi archivi possono essere installati da file locale (invece che scaricandoli dal repository) con il semplice:
pip install et_xmlfile-1.0.1.tar.gz
pip install jdcal-1.4.1-py2.py3-none-any.whl
pip install openpyxl-2.6.4.tar.gz
==== Installazione da repository locale contenente setup.py ====
Molte librerie Python vengono distribuite con lo script **setup.py** che contiene anche le informazioni sulle dipendenze. La via predefinita per installare queste librerie sarebbe l'esecuzione di:
python3 setup.py install
Tuttavia si può anche utilizzare il sistema PIP, con il seguente comando da eseguire nella directory che contiene ''setup.py'':
pip3 install .
Vengono verificate le eventuali dipendenze; se non sono soddisfatte il sistema PIP cercherà di risolverle automaticamente eventualmente scaricando il necessario dal repository **[[https://pypi.org/|PyPI]]**.
==== Elenco delle librerie installate ====
Purtroppo il comando **pip list** fa vedere le librerie aggiuntive installate **sia dal sistema Pip** che dal sistema **gestione pacchetti** Debian.
pip3 list
==== Rimozione di una libreria ====
Se una libreria è stata installato con il sistema Pip, è possibile rimuoverla con il comando seguente:
pip3 uninstall openpyxl
==== Installazione di una particolare versione ====
Se si desidera scaricare e installare una specifica versione di un pacchetto, si può usare la sintassi:
pip install Adafruit-PureIO==0.2.1
Attenzione all'**installazione sovrapposta di versioni differenti** della stessa libreria! Verificare sempre con **pip list** quale risulta essere la versione in uso e controllare nella directory **/usr/local/lib/python2.7/dist-packages/** cosa risulta installato. In generale dovrebbe essre utilizzata sempre la versione più recente.
Per disinstallare installazioni multiple della stessa libreria può essere necessario eseguire più volte il comando **pip uninstall %%%%**. Almeno con la versione **1.5.6** di pip (Debian 8 Jessie), sembra che non sia possibile disinstallare una versione specifica di una libreria.
===== Come vedere le dipendenze =====
Per vedere le dipendenze di un pacchetto installato dal repository pip, si può usare **pipdeptree** (in Debian 10 Buster basta installare il pacchetto **python3-pipdeptree**):
pipdeptree -p matrix-nio