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:
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:
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/.
È 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:
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
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 PyPI.
Purtroppo il comando pip list fa vedere le librerie aggiuntive installate sia dal sistema Pip che dal sistema gestione pacchetti Debian.
pip3 list
Se una libreria è stata installato con il sistema Pip, è possibile rimuoverla con il comando seguente:
pip3 uninstall openpyxl
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 <package>. Almeno con la versione 1.5.6 di pip (Debian 8 Jessie), sembra che non sia possibile disinstallare una versione specifica di una libreria.
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