====== 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