<div dir="ltr">Ciao Luca<br><div class="gmail_extra"><br><div class="gmail_quote">2013/10/30 Luca Mandolesi <span dir="ltr"><<a href="mailto:mandoluca@gmail.com" target="_blank">mandoluca@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Ciao Salvatore,<div>ho fatto la prova nel modo corretto che mi hai segnalato e funziona.</div><div><br></div><div>Unico problema: chiamando un modulo da path di C:\Python27\Lib\site-packages che a sua volta sfrutta un modulo che Qgis ha di default dentro al suo site-packages viene sollevato un errore per problemi di versione. Quindi c'è sempre da stare attenti a mischiare i path.</div>

<div><br></div><div>Domandona:</div><div>quando abilito il mio plugin pyarchinit, questo avrebbe bisogno di settare la famosa variabile Globale con un bel Accoda per pescare i .exe del programma GRaphviz. Sai per caso se c'è in pyqgis la classe relativa per poter manipolare da plugin quella path, senza chiedere all'utente che lo faccia dalle impostazioni di QGis. Vorrei prevedere nel pannello di configurazione del mio plugin anche una variabile in cui settare manualmente il path a Graphviz nel caso vi fosse installata una versione difforme da quella consigliata nella nostra documentazione.</div>
</div></blockquote><div><br><br></div><div>non esiste la classe relativa da utilizzare con python, in QGIS tali variabili vengono scritte sul file delle impostazioni (in .config/QGIS/QGIS2.conf, per linux, nel regedit in caso di sistemi Windows) così è sufficiente usare QSettings, con il valore della chiave corrispondente che in questo caso è "qgis/customEnvVars", per aggiungere o eliminare variabili d'ambiente.<br>
<br></div><div>Un esempio su come impostare la variabile PYTHONPATH dalla console python è:<br><br></div><div>>>> from PyQt4.QtCore import QSettings<br></div><div>>>> s = QSettings()<br>>>> customVars = ['append|PYTHONPATH=/mio/path']<br>
</div><div>>>> s.setValue("qgis/customEnvVars", customVars)<br><br></div><div>attento, il codice sopra sovrascrive le varibili che eventualmente sono state già impostate nelle opzioni di QGIS, se vuoi aggiugere una nuova a quelle esistenti:<br>
<br></div><div>>>> customVars = s.value("qgis/customEnvVars")<br></div><div>>>> tuaVar = 'append|PYARCHINIT=C:\Python27\Lib'<br></div><div>>>> customVars.append(tuaVar)<br><br>
</div><div>Potresti dare un'occhiata anche al modulo os.environ con il quale puoi definire una tua variabile semplicemente:<br><br></div><div>>>> import os<br></div><div>>>> os.environ['PYARCHINIT'] = 'tuopath'<br>
</div><div><br></div><div>Mentre se il problema è semplicemente il caricamento di un modulo specifico che porta ad errore perchè non trovato<br></div><div>nel PYTHONPATH, allora potrebbe bastare anche:<br><br></div><div>>>> import sys<br>
</div><div>>>> if dir not in sys.path:<br></div><div>>>>     sys.path.append(dir)<br><br></div><div>dove dir è la directory che vorresti impostare dal tuo plugin.<br><br></div><div>In ogni caso credo ci sia bisogno di un riavvio di QGIS.<br>
</div><div><br></div><div>Spero di non essere stato troppo dispersivo e che queste indicazioni possano tornarti utili. (spero anche di aver focalizzato il problema :-)<br><br></div><div>Saluti,<br></div><div>-SL <br></div>
<div><br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">
<div><br></div><div>Ciao e grazie</div><span class=""><font color="#888888"><div>Luca</div><div><br></div><div><br></div></font></span></div><div class=""><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">
2013/10/28 Salvatore Larosa <span dir="ltr"><<a href="mailto:lrssvtml@gmail.com" target="_blank">lrssvtml@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p dir="ltr">Il 28/ott/2013 17:14 "Luca Mandolesi" <<a href="mailto:mandoluca@gmail.com" target="_blank">mandoluca@gmail.com</a>> ha scritto:</p>

<div><br>
><br>
><br>
><br>
><br>
>> Dalla console puoi richiamare i packages presenti nel PYTHONPATH, la variabile che imposti tu credo sia qualcosa di personalizzato,<br>
>> perciò non saprei se va a finire all'interno del path del pitone. Se è necessario creare quella variabile credo dovresti richiamarla direttamente dal tuo plugin.<br>
>> Potresti anche provare ad aggiungere il percorso direttamente dalla console python (con le stesse righe di codice della macro).<br>
><br>
><br>
> Il mio PYTHONPATH punta solo su C:\OSGeo4W\apps\qgis\python\ mentre ignora C:\Python27. Appena però punto a quello arriva il modulo SIP che fa danni.<br>
>  <br>
>><br>
>> Ho provato anche il metodo macro, ma quando riapro il progetto il pezzettino di codice per aggiungere il path a sys.path è sparito, non è stato salvato e anche la flag delle macro non è attiva.<br>
>><br>
>><br>
>> Le macro vengono salvate nel file XML di progetto (.qgs), così è necessario salvare e riaprire lo stesso progetto.<br>
>> L'ho appena testato è funziona in entrambe le versioni, 2.0 e master.<br>
><br>
><br>
> Fatto un reinstall..effettivamente ora funziona prima invece riaprendo il medesimo progetto la modifica spariva...mah... Una domanda:<br>
> devo semplicemente aggiugere le righe<br>
> import sys<br>
> sys.path.append('miopath')<br>
>  <br>
> oppure le macro esigono sempre una def?<br>
><br>
> def mytest():<br>
>     import sys<br>
>     sys.path.append('miopath')<br>
>  <br>
></div><p></p>
<p dir="ltr">La macro crea un modulo python che sarà caricato nel tuo progetto con il quale puoi eseguire specifiche funzioni solo per gli eventi openProject, saveProject e closeProject. Quindi quelle funzioni devono rimanere, in sostanza devi solo sostituire 'pass' con qualche linea di codice. Nel tuo caso devi solamente modificare la funzione openProject:</p>



<p dir="ltr">def openProject():<br>
    import sys<br>
    sys.path.append('tuopath')</p>
<p dir="ltr">Per le funzioni saveProject e closeProject lascia le stringhe di default.</p>
<p dir="ltr">Ciao,<br>
-SL</p><div><div>
<p dir="ltr">>>> Ho ricreato anche l'errore e questo è il messaggio in finestra:<br>
>>><br>
>>> Impossibile caricare PyQGIS.<br>
>>> Il supporto Python verrà disabilitato.<br>
>>><br>
>>><br>
>>> Traceback (most recent call last):<br>
>>>   File "", line 1, in <br>
>>> RuntimeError: the sip module implements API v8.0 but the qgis.core module requires API v8.1<br>
>>><br>
>>><br>
>>> Questo avviene perchè in site-packages di C:\\python27 ho un modulo sip installato tempo fa per lavorare con le QT fuori da Qgis è chiaramente non compatibile.<br>
>>><br>
>>><br>
>>> Ergo ne dedurrei che c'è in primis un problema di salvataggio dei settaggi Macro a livello di progetto e poi che sarebbe bello che, in caso di settaggi alle variabili di ambiente che impediscono a QGis di funzionare, il sistema flaggasse su false la customEnvVarsUse in modo da permettere all'utente di rimediare agli errori, anche se non so se tale cosa può essere fatta da QGis all'avvio.<br>



>><br>
>> mmm...., non capisco perchè quell'errore, prima di aprire eventualmente un bug, fai una prova con la macro e vedi se ottieni lo stesso identico errore.<br>
>><br>
>> Saluti,<br>
>> -SL<br>
><br>
><br>
> Ok, proverò. Intanto grazie mille.<br>
> Luca <br>
>    </p>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Salvatore Larosa<br>linkedIn: <a href="http://linkedin.com/in/larosasalvatore" target="_blank">http://linkedin.com/in/larosasalvatore</a><br>twitter: @lrssvt<br>
skype: s.larosa<br>IRC: lrssvt on freenode<br>
</div></div>