gennaio 20, 2015

QGIS i moduli Python e Mac OS X


Negli ultimi anni molti sono gli utenti che si sono avvicinati a questo software, nato da una idea di Gary Sherman nel lontano 2002, e con il tempo sono cresciute di pari passo anche le funzioni aggiuntive, i Plugin.
L'aspetto più intrigante di Qgis, basato su un motore C++ e Qt, è che permette di essere espanso utilizzando il linguaggio di programmazione Python alla portata di utenti smanettoni e non necessariamente Software Engineer.
Purtroppo, nella vorticosa e acrobatica evoluzione, capita spesso che un Plugin non funzioni proprio su tutti i PC, la causa principale è quasi sempre l'impossibilità di testare il Plugin su tutti i sistemi operativi e su architetture diverse da quella a disposizione dello sviluppatore. In particolare, spesso il mancato funzionamento è dovuto all'assenza di un modulo Python complementare.

Sono sempre stato disturbato dalle fastidiosissime finestre Errore Python che compaiono ogni volta che un Plugin non ne vuole proprio sapere, ma proprio nella descrizione di quell'errore ho trovato la chiave per riparare le eventuali mancanze di questi moduli.


La struttura del messaggio “Errore Python”

Il messaggio è diviso generalmente in quattro parti:


la prima ci avvisa che è impossibile caricare il Plugin xx;


la seconda parte è titolata
Traceback (most recent call last)
ed è la parte più importante, qui sono descritte le chiamate recenti del programma prima di ottenere l'errore, in un certo senso è il Log dell'istante prima e fino all'errore;





la terza mostra il numero di Versione Python e il numero di Versione di QGIS, informazioni comunque utili per verificare eventuali incompatibilità;


la quarta ed ultima parte è titolata Percorso Python e restituisce il percorso dei Plugin Python elencati nella prima parte.



Poniamo l’attenzione sulle ultime righe del Traceback:
File "/Users/User/.qgis2/python/plugins/xx/buffers.py", line 11, in 
from OpenGL.GL import * 
File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/qgis/utils.py", line 460, in _import 
mod = _builtin_import(name, globals, locals, fromlist, level) 
ImportError: No module named OpenGL.GL 

È inequivocabile l'assenza del modulo OpenGL.GL chiamato alla riga 11 del file buffers.py, che non viene trovato in: name, globals, locals, fromlist, level.
Ok, il Plugin non funziona ed ho tre scelte: disinstallo, attendo una patch o riparo? Ovvio, riparo!

Come funziona 

Nelle giungla di dipendenze Python ci viene in aiuto PyPI - the Python Package Index dal sito ufficiale raggiungibile all'indirizzo https://pypi.python.org/pypi attraverso la quale andremo a cercare il modulo.
Tra i risultati identifico quello che a naso è il pacchetto che ci interessa PyOpenGL 3.1.0 (Standard OpenGL bindings for Python)

Seguendo il link si apre la pagina del pacchetto e tanto per essere sicuri seguo anche il link alla Homepage del pacchetto http://pyopengl.sourceforge.net
Dalle informazioni descritte nella pagina leggo che funziona con PyQt (quindi Qgis) e che esiste addirittura un pacchetto addizionale PyOpenGL-accelerate (Acceleration code for PyOpenGL) che fornirebbe accelerazione sulle comuni operazioni di PyOpenGL 3.x.

L'accelerazione mi ha gasato ma la sperimenterò un’altra volta.

Girovagando in rete e anche sulla Homepage di PyOpenGL 3.x apprendo che i pacchetti si possono installare comodamente con PIP, un tool raggiungibile alla pagina https://pip.pypa.io/en/latest/
Alla sezione download ci procureremo il pacchetto get-pip.py che una volta scaricato sarà spostato nella cartella Python del nostro Mac (Es. /Library/Python/2.7/site-packages)

Tutto sarà lanciato dal Terminale (/Applications/Utilities) nel quale una volta aperto scriveremo i seguenti comandi, tutti seguiti da invio:
 sudo su

Sarà richiesta la password di amministratore, durante questa digitazione il terminale non visualizzerà alcun carattere, ancora invio e successivamente digiteremo il comando:
 cd /Library/Python/2.7/site-packages

Ci siamo portati sulla directory dove saranno installati i pacchetti. La prima cosa da fare è installare PIP con il seguente comando:
 python get-pip.py

Il messaggio  Successfully installed pip  sarà la conferma che tutto è andato per il verso giusto, da questo momento siamo pronti ad installare tutti i pacchetti Python che serviranno.
Proseguendo nel nostro caso, ci serve PyOpenGL, quindi basterà eseguire:
 pip install pyopengl

Quando i download e le installazioni saranno complete, digiteremo il comando:
  exit

abbiamo chiuso la sessione come amministratore, e ancora una volta digiteremo:
  exit

ed abbiamo effettuato anche il logout dal terminale.


Et voilà!

Non resta che testare il Plugin, lancio Qgis e...WOW! Nessun errore e il Plugin è caricato sulla toolbar!
L'installazione di quanto detto può avvenire anche offline, ma i comandi saranno leggermente diversi, tutto è comunque descritto sulla pagina di PIP.

I cugini che usano Windows troveranno un preziosissimo tutorial di Werner Macho al seguente link

Nessun commento:

Posta un commento