User Tools

Site Tools


doc:appunti:prog:python_pip

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

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
doc/appunti/prog/python_pip.txt · Last modified: 2022/01/03 21:05 by niccolo