User Tools

Site Tools


doc:appunti:prog:python27_on_debian6

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:prog:python27_on_debian6 [2019/05/22 12:26] – [Archivi da installare] niccolodoc:appunti:prog:python27_on_debian6 [2019/10/23 10:00] – [Backport di Pyhton 2.7] niccolo
Line 1: Line 1:
-====== Backport di Pyhton 2.7 ======+====== Backport di Python 2.7 ======
  
 ===== Su Debian 6 Squeeze ===== ===== Su Debian 6 Squeeze =====
Line 10: Line 10:
  
 <code> <code>
-apt-get install git gcc build-essential \+apt-get install curl git gcc build-essential \
  libmysqlclient-dev libadns1-dev \  libmysqlclient-dev libadns1-dev \
  libreadline-dev libgdbm-dev zlib1g-dev libsqlite3-dev \  libreadline-dev libgdbm-dev zlib1g-dev libsqlite3-dev \
Line 16: Line 16:
 </code> </code>
  
-Questa è l'installazione di pyenv effettuata nella directory utente **$HOME/.pyenv/** :!: che è sconsigliata se deve essere usata a livello di sistema:+==== Installazione in $HOME utente ==== 
 + 
 +:!: **ATTENZIONE**: Qui si installa pyenv nella directory utente **$HOME/.pyenv/** che è **sconsigliato** se deve essere usata a livello di sistema (vedi più avanti):
  
 <code> <code>
 curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer \ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer \
     > pyenv-installer     > pyenv-installer
 +export USE_GIT_URI='yes'
 cat pyenv-installer | bash cat pyenv-installer | bash
 </code> </code>
 +
 +==== Installazione in /usr/local/lib/ ====
  
 Più opportunamente si può usare una **directory di sistema**, pur eseguendo il tutto da **utente non privilegiato**. L'impostazione **USE_GIT_URI** serve ad utilizzre http invece di https per aggirare il problema di SSL su vecchie distribuzioni: //tlsv1 alert protocol version//. Più opportunamente si può usare una **directory di sistema**, pur eseguendo il tutto da **utente non privilegiato**. L'impostazione **USE_GIT_URI** serve ad utilizzre http invece di https per aggirare il problema di SSL su vecchie distribuzioni: //tlsv1 alert protocol version//.
Line 35: Line 40:
 cat pyenv-installer | bash cat pyenv-installer | bash
 </code> </code>
 +
 +==== Utilizzo di pyenv ====
  
 Dopo aver installato il tool pyenv è necessario inizializzare l'ambiente prima di usarlo (conviene aggiungere i comandi a ''.bashrc'' o simili): Dopo aver installato il tool pyenv è necessario inizializzare l'ambiente prima di usarlo (conviene aggiungere i comandi a ''.bashrc'' o simili):
Line 58: Line 65:
 </code> </code>
  
-Dopo avere settato queste variabili è possibile installare librerie con il gestore **pip** (resta il problema del download automatico via https, per aggirarlo è necessario fare il download del pacchetto da un altro host e quindi eseguire **pip install nomefile.tar.gz**).+Dopo avere settato queste variabili è possibile installare librerie con il gestore **pip**. Resta il problema del download automatico via https, per aggirarlo è necessario fare il download del pacchetto da un altro host e quindi eseguire **pip install nomefile.tar.gz**.
  
-==== Ricollocazione dell'installazione ====+==== Ricollocazione dell'installazione di pyenv ====
  
-La directory ''$HOME/.pyenv/'' non può essere spostata altrove facilmenteAd esempio tutti gli script creati in **$HOME/.pyenv/versions/2.7.13/bin/** contengono hard-coded il percorso di installazione originale.+La directory ''$HOME/.pyenv/'' **non può essere spostata altrove**Molti degli eseguibili creati in **$HOME/.pyenv/versions/2.7.13/** contengono hard-coded il percorso di installazione originale, ad esempio:
  
 +  * bin/python2.7
 +  * lib/libpython2.7.a
 +  * lib/pkgconfig/python-2.7.pc
 +
 +==== Problema con pip e ssl ====
 +
 +Con l'installazione di **pyenv** e di Python 2.7.13 comunque **non si risolve il problema dell'SSL**: Debian 6 fornisce una versione troppo vecchia della libreria, quindi il **wget** da siti **https falisce**. Ad esempio anche la ricerca della **libreria openpyxl** fallisce:
 +
 +<code>
 +pip search openpyxl
 +...
 +SSLError: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661)
 +</code>
 +
 +Ovviamente viene a mancare anche **la gestione delle eventuali dipendenze** (download e install automatico). La soluzione è scaricare gli archivi necessari e copiarli in una directory locale prima di fare l'installazione. Nel caso della libreria **openpyxl** gli archivi necessari sono prelevabili da **pypi.org**:
 +
 +  * **[[https://pypi.org/project/jdcal/#files|jdcal-1.4.1-py2.py3-none-any.whl]]**
 +  * **[[https://pypi.org/project/et_xmlfile/#files|et_xmlfile-1.0.1.tar.gz]]**
 +  * **[[https://pypi.org/project/openpyxl/#files|openpyxl-2.6.2.tar.gz]]**
 +
 +Gli archivi di tipo **.tar.gz** vanno scompattati, mentre i **.whl** (Python wheel) possono essere installati direttamente (ricordarsi sempre di settare le **variabili di ambiente Pyenv**):
 +
 +<code>
 +pip install /usr/local/download/openpyxl/jdcal-1.4.1-py2.py3-none-any.whl
 +pip install /usr/local/download/openpyxl/et_xmlfile-1.0.1/
 +pip install /usr/local/download/openpyxl/openpyxl-2.6.2/
 +</code>
 ===== Su Fedora 12 ===== ===== Su Fedora 12 =====
  
Line 114: Line 148:
  
 Ricordarsi comunque che per eseguire **pip** e simili bisogna impostare le variabili d'ambiente. Ricordarsi comunque che per eseguire **pip** e simili bisogna impostare le variabili d'ambiente.
 +
 +===== Installazione con pip =====
 +
 +Il comando **pip** può essere usato per installare le librerie necessarie nell'ambiente Python in uso. In caso di Python installato in backporting come illustrato sopra (**pyenv**, ecc.) è sufficiente **impostare le variabili d'ambiente** necessarie a pyenv prima di eseguire pip.
 +
 +Alcuni comandi utili:
 +
 +^ pip list                      | Elenca i pacchetti installati tramite il sistema pip.  |
 +^ pip freeze                    | Elenca i pacchetti installati tramite il sistema pip, in formato //requirements// |
 +^ pip search package            | Cerca un pacchetto disponibile nei repository pip.  |
 +^ pip install package           | Scarica un pacchetto dai repository e lo installa.  |
 +^ pip install /src/pkg/dir/     | Installa un pacchetto dalla directory di installazione (deve contenere il file **setup.py**).  |
 +^ pip uninstall package         | Rimuove un pacchetto installato. Se si desidera disinstallare una specifica versione, usare la stringa prodotta da //pip freeze// (requirements format), ad esempio:\\ pip uninstall Pillow==5.4.1  |
 +
 +Per vedere **quali moduli installati da pip sono disponibili in Pyton** (e le rispettive versioni), eseguire in Python:
 +
 +<code>
 +import pip
 +pip.get_installed_distributions(local_only=True)
 +[ setuptools 28.8.0 (/usr/local/lib/pyenv/versions/2.7.13/lib/python2.7/site-packages),
 +  pip 9.0.1 (/usr/local/lib/pyenv/versions/2.7.13/lib/python2.7/site-packages),
 +  openpyxl 2.4.9 (/usr/local/lib/pyenv/versions/2.7.13/lib/python2.7/site-packages),
 +  jdcal 1.3 (/usr/local/lib/pyenv/versions/2.7.13/lib/python2.7/site-packages),
 +  et-xmlfile 1.0.1 (/usr/local/lib/pyenv/versions/2.7.13/lib/python2.7/site-packages)
 +]
 +</code>
 +
 +Si ottiene l'elenco delle librerie contenute in **$PYTHONPATH/../lib/python2.7/site-packages/**.
 +
 +**ATTENZIONE**: L'elenco sopra riportato dovrebbe essere lo stesso riportato da **list** o **freeze**
 +
 +<code>
 +pip list
 +et-xmlfile (1.0.1)
 +jdcal (1.3)
 +openpyxl (2.6.2, /usr/local/download/openpyxl/openpyxl-2.6.2)
 +Pillow (5.4.1, /usr/local/download/python-pil/Pillow-5.4.1/src)
 +pip (9.0.1)
 +setuptools (28.8.0)
 +</code>
 +
 +<code>
 +pip freeze
 +et-xmlfile==1.0.1
 +jdcal==1.3
 +openpyxl==2.6.2
 +Pillow==5.4.1
 +</code>
 +
 +Se i due elenchi differiscono potrebbe dipendere dal fatto che il pyenv non ha impostato correttamente le variabili d'ambiente (vedi sopra il problema della rilocazione dei file dopo l'installazione).
 +
 +===== Aggiornamento libreria con pip =====
 +
 +È possibile installare una versione aggiornata di una libreria tramite pip, disinstallando eventualmente il pacchetto Debian che contiene la vecchia versione. Ad esempio:
 +
 +<code>
 +dpkg --purge python-openpyxl
 +pip install openpyxl
 +</code>
 +
doc/appunti/prog/python27_on_debian6.txt · Last modified: 2021/10/09 17:49 by niccolo