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 revision Previous revision
Next revision
Previous revision
doc:appunti:prog:python27_on_debian6 [2019/05/22 17:19]
niccolo [Installazione con pip]
doc:appunti:prog:python27_on_debian6 [2019/05/29 12:59] (current)
niccolo [Problema con pip e ssl]
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.  |+^ 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 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 ​ | ^ 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: 
- 
-<​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: Per vedere **quali moduli installati da pip sono disponibili in Pyton** (e le rispettive versioni), eseguire in Python:
Line 175: Line 198:
  
 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). 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.1558538367.txt.gz · Last modified: 2019/05/22 17:19 by niccolo