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
doc:appunti:prog:python27_on_debian6 [2019/05/22 16:06] – [Installazione con pip] niccolodoc:appunti:prog:python27_on_debian6 [2021/10/09 17:49] (current) 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 104: Line 138:
 eval "$(pyenv virtualenv-init -)" eval "$(pyenv virtualenv-init -)"
 export PYENV_VERSION=2.7.13 export PYENV_VERSION=2.7.13
-exec python $@+exec python "$@"
 </code> </code>
  
Line 117: 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> <code>
-pip install -/dir/package/+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> </code>
  
-La directory che contiene la distribuzione deve contenere il file **setup.py**.+Si ottiene l'elenco delle librerie contenute in **$PYTHONPATH/../lib/python2.7/site-packages/**.
  
-Per vedere quali moduli (e le rispettive versioni) sono stati installati da pip, eseguire in Python:+**ATTENZIONE**L'elenco sopra riportato dovrebbe essere lo stesso riportato da **list** o **freeze**
  
 <code> <code>
-import pip +pip list 
-pip.get_installed_distributions(local_only=True)+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> </code>
  
doc/appunti/prog/python27_on_debian6.1558533987.txt.gz · Last modified: 2019/05/22 16:06 by niccolo