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 16:45] – [Installazione con pip] 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**. Molti degli eseguibili creati in **$HOME/.pyenv/versions/2.7.13/** contengono hard-coded il percorso di installazione originale, ad esempio: 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:
Line 68: Line 75:
   * lib/pkgconfig/python-2.7.pc   * 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 121: Line 151:
 ===== Installazione con pip ===== ===== 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 prima di eseguire 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: Alcuni comandi utili:
  
 ^ pip list                      | Elenca i pacchetti installati tramite il sistema pip.  | ^ 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 search package            | Cerca un pacchetto disponibile nei repository pip.  |
 ^ pip install package           | Scarica un pacchetto dai repository e lo installa.  | ^ pip install package           | Scarica un pacchetto dai repository e lo installa.  |
-^ pip FIXME                     | Rimuove un pacchetto installato.  |+^ 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  |
  
-Se non è possibile scaricare il pacchetto dai repository pip, è possibile scompattare l'archivio del pacchetto in una directory locale ed eseguire: +Per vedere **quali moduli installati da pip sono disponibili in Pyton** (e le rispettive versioni), eseguire in Python:
- +
-<code> +
-pip install -e /dir/package/ +
-</code> +
- +
-La directory che contiene la distribuzione deve contenere il file **setup.py**. +
- +
-Per vedere **quali moduli installati da pip sono disponibili in Pyton** e le rispettive versioni, eseguire in Python:+
  
 <code> <code>
Line 151: Line 175:
 </code> </code>
  
-FIXME L'elenco sopra riportato potrebbe differire da quanto riportato da **list** o **freeze**+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> <code>
Line 170: Line 196:
 Pillow==5.4.1 Pillow==5.4.1
 </code> </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