[Gfoss] Qgis e moduli di python

Alessandro Pasotti ale.pas a tiscali.it
Lun 27 Giu 2011 18:24:32 CEST


In data lunedì 27 giugno 2011 17:13:57, Sandro Santilli ha scritto:
: > On Mon, Jun 27, 2011 at 04:39:24PM +0200, Paolo Corti wrote:
> > Ciao Sandro
> > 
> > 2011/6/27 Sandro Santilli <strk at keybit.net>:
> > > Temo che questo genere di cose pero' si vogliano fare solo
> > > con l'ausilio del sistema operativo, perche' i moduli python
> > > si vorranno installare system-wide (se possibile) e l'utente
> > > che apre qgis NON e' (si spera) amministratore di sistema.
> > 
> > Un modo ottimo di risolvere questi problemi in Python puo' essere
> > quello di usare virtualenv [0] che consente di
> > creare ambienti Python isolati da tutto il resto.
> 
> ...
> 
> > [0] http://www.virtualenv.org/
> 
> Interessante alternativa. Certo in questo modo dovrebbe essere
> piu' semplice, anche se non necessariamente raccomandabile.
> 
> L'idea dell'interfaccia standard (il "plugin helper")
> consentirebbe l'una o l'altra cosa (o altro ancora), con qualche
> tipo di configurazione. La configurazione di quale helper
> utilizzare potrebbe essere esposta tramite interfaccia grafica
> di qgis (plugin install command, con le keyword substitution).
> 
> Come dovrebbe essere questa interfaccia ?
> Ne esiste gia' una ? (easy_install)

mumble mumble... ... ecco qualche pensierino sul tema.

easy_install verrà probabilmente sostituito da "pip"

http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install

però da quanto ho capito, easy_install viene installato automaticamente con il 
pacchetto setuptools, mentre pip lo devi installare a mano (o con 
easy_install).

Comunque, questo non è importante, l'importante è capire se (per tutte le 
piattaforme), dando per scontato che almeno l'interprete python sia installato 
(altrimenti ha poco senso parlare di plugin python), su quali tool possiamo 
contare per un'installazione automatizzata delle dipendenze python ?

Purtroppo conosco una sola piattaforma (Linux) quindi non ho idea di come 
possa funzionare sulle altre, ma su Linux bisognerebbe installare nell'ordine:

- virtualenv (a livello di sistema, credo)
- easy_install o pip (magari setuptools viene installato di default?)
- le dipendenze del caso

Io credo che un grosso passo avanti sarebbe già quello di includere le 
istruzioni "import" in blocchi try/except e stampare un sano messaggio su come 
risolvere il problema in caso di dipendenze mancanti, al momento la situazione 
è un orribile traceback, veramente disorientante per chi non lo sa leggere.

Per un'installazione automatizzata, si potrebbe pensare ad includere nella 
dichiarazione del plugin l'elenco delle dipendenze (in formato 
pip/easy_install compatibile) e procedere al caricamento in caso manchino.

C'è anche questo:
http://packages.python.org/distribute/setuptools.html#using-find-packages

... promette bene:

Automatically find/download/install/upgrade dependencies at build time using 
the EasyInstall tool, which supports downloading via HTTP, FTP, Subversion, 
and SourceForge, and automatically scans web pages linked from PyPI to find 
download links. (It’s the closest thing to CPAN currently available for 
Python.)

Forse il problema principale è che i plugin al momento vengono semplicemente 
scaricati e scompattati, non viene lanciato nessuno script di setup, che 
sarebbe fondamentale per qualsiasi installazione di dipendenze.

Vedi lo standard:
http://docs.python.org/install/index.html

Ultimo problemuccio: alcuni pacchetti python contengono pezzi di codice in 
altri linguaggi (tipicamente in C), quindi il processo di installazione 
standard "python setup.py install" prevede compilazione, che a sua volta 
prevede magari che siano già installati gli header e/o altre librerie.

Insomma, un sistema standardizzato per dare utili istruzioni all'utente in 
caso di dipendenze mancanti costerebbe poco sforzo e darebbe un grande 
risultato, un sistema automatico che funzioni magari nel 60% dei casi sarebbe 
già più laborioso, un sistema automatico che funzioni sempre, credo che sia 
quasi impossibile. 


Altre idee ?


-- 
Alessandro Pasotti
itOpen - "Open Solutions for the Net Age"
w3:  www.itopen.it
Linux User# 167502


Maggiori informazioni sulla lista Gfoss