Salve a tutti,
ho trovato un qualcosa che se proprio un bug non è, almeno è una "falla": Il nuovo QGis 2 permette di modificare le Variabili di Ambiente, sostituendo accodando ecc.
Ora, dovendo installare sotto windows dei moduli non presenti in Qgis, questi finivano ovviamente dentro alla cartella C:\Python27\lib\site-packages. Di solito li copio e incollo nella cartella site-packages del python di Osgeo...
Questa volta ho voluto provare a dire a Qgis di prendere i moduli anche dal Python in C:\\Python27... Ops...Qgis non ne vuol sapere di avviarsi, perchè sta caricando probabilmente un modulo sip errato (ho visto apparire una finestrina per un attimo)...
Sapere mica quale è la variabile nel regedit da cancellare in modo da riportare Qgis2.0.1 indietro pirma del mio misfatto. Lo segnalerei non come baco, ma almeno come Warning perchè viene molto naturale provare a puntare dentro alla cartella di Site-packages di C:\\Pythonxy per chi sviluppa. Chiaro che andare a toccare tutte le variabili è a proprio rischio e pericolo, ma il fatto che ti mandino in un buco nero senza possibilità di ripristino è un po' un macello.
Ciao e grazie Luca _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Ciao,
2013/10/28 Luca Mandolesi <[hidden email]>
strano, comunque la variabile è "customEnvVarsUse", credo sia sufficiente un search in regedit ed impostare la chiave a "false". Dopo aver avviato QGIS dovresti trovare la checkbox disattivata permettendoti di eliminare o modificare la variabile insertia. Il problema credo avvebga quando sceglie "Sovrascrivi" e non "Accoda" per la variabile ?? Anche prova a creare una macro che all'apertura del progetto inserisce il pythonpath che vuoi provare. Per attivare la macro, vai in Impostazioni -> Opzioni, nella scheda Generale trovi (in fondo) un menu a tendina per abilitare le macro, scegli Sempre. Nelle proprietà di progetto, alla voce Macro, abilita macro python e copia incolla il seguente codice nella funzione openProject(): import sys sys.path.append('<tuo_pythonpath>') Salva e riapri il progetto, verrà aggiunto il path appena insertito alla variabile PYTHONPATH. Anche vedi se riesci a capire cosa appare in quella "finestrina". Saluti, -SL
-- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Ottimo ora si riavvia. Ho scelto Accoda segnalando che volevo aggiungerla alla variabile PYTHONPATH. Forse è per quello che si incasinava? Ho provato a settare una mia variabile: PYARCHINITPATH puntando a C:\Python27\Lib\site-packages ma dalla console se chiamo un modulo che ho nella cartella di python sotto C ma non in python dentro Osgeo il modulo non viene trovato.
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. Ho ricreato anche l'errore e questo è il messaggio in finestra: Impossibile caricare PyQGIS.
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.
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.
Ciao e grazie
Luca _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Ciao,
2013/10/28 Luca Mandolesi <[hidden email]>
Accoda va bene e non è il problema, forse scegliendo Sovrascrivi potrebbe generare conflitti con qualche plugin installato.
Dalla console puoi richiamare i packages presenti nel PYTHONPATH, la variabile che imposti tu credo sia qualcosa di personalizzato, 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. Potresti anche provare ad aggiungere il percorso direttamente dalla console python (con le stesse righe di codice della macro).
Le macro vengono salvate nel file XML di progetto (.qgs), così è necessario salvare e riaprire lo stesso progetto. L'ho appena testato è funziona in entrambe le versioni, 2.0 e master.
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. Saluti, -SL
-- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
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.
Fatto un reinstall..effettivamente ora funziona prima invece riaprendo il medesimo progetto la modifica spariva...mah... Una domanda: devo semplicemente aggiugere le righe
import sys sys.path.append('miopath') oppure le macro esigono sempre una def? def mytest(): import sys sys.path.append('miopath')
Ok, proverò. Intanto grazie mille. Luca _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Il 28/ott/2013 17:14 "Luca Mandolesi" <[hidden email]> ha scritto: 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: def openProject(): Per le funzioni saveProject e closeProject lascia le stringhe di default. Ciao, >>> Ho ricreato anche l'errore e questo è il messaggio in finestra: _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Ciao Salvatore, ho fatto la prova nel modo corretto che mi hai segnalato e funziona. 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.
Domandona: 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.
Ciao e grazie Luca 2013/10/28 Salvatore Larosa <[hidden email]>
_______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Ciao Luca
2013/10/30 Luca Mandolesi <[hidden email]>
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. Un esempio su come impostare la variabile PYTHONPATH dalla console python è: >>> from PyQt4.QtCore import QSettings >>> s = QSettings() >>> customVars = ['append|PYTHONPATH=/mio/path'] >>> s.setValue("qgis/customEnvVars", customVars) 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: >>> customVars = s.value("qgis/customEnvVars") >>> tuaVar = 'append|PYARCHINIT=C:\Python27\Lib' >>> customVars.append(tuaVar) Potresti dare un'occhiata anche al modulo os.environ con il quale puoi definire una tua variabile semplicemente: >>> import os >>> os.environ['PYARCHINIT'] = 'tuopath' Mentre se il problema è semplicemente il caricamento di un modulo specifico che porta ad errore perchè non trovato nel PYTHONPATH, allora potrebbe bastare anche: >>> import sys >>> if dir not in sys.path: >>> sys.path.append(dir) dove dir è la directory che vorresti impostare dal tuo plugin. In ogni caso credo ci sia bisogno di un riavvio di QGIS. Spero di non essere stato troppo dispersivo e che queste indicazioni possano tornarti utili. (spero anche di aver focalizzato il problema :-) Saluti, -SL
-- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Free forum by Nabble | Edit this page |