Perché non riesco a importare il mio script dalla console di Python?


9

sto lavorando con la console qgis python. Di solito memorizzo tutti i miei script Python in ~ / Scripts / python. Ho impostato PYTHONPATH su ~ / Scripts / python nel mio .bashrc Tuttavia, non riesco a importare i miei script dalla console all'interno di QGIS.

Ecco il mio errore quando provo a importare uno script chiamato Create_Figures_2D

import Create_Figures_2D
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 309, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named Create_Figures_2D

Come posso configurare PYTHONPATH per i pigmei?


1
Prova ad aggiungere ~/Scripts/pythona PATH che normalmente funziona per me. Controllalo conimport os; os.path
Nathan W,

Risposte:


11

Nella console Python eseguire quanto segue:

import sys
sys.path

Vedi se la tua voce PYTHONPATH è elencata. Immagino di no, dal momento che quella variabile d'ambiente non è probabilmente disponibile per Python con QGIS.

Per aggiungere la cartella degli script al sys.path della console, fai una append () regolare:

sys.path.append('~/Scripts/python')

Quindi dovresti essere in grado di importare i tuoi moduli da lì per quella sessione della console. Consiglio di espandere ~ al percorso completo dell'utente (non sono sicuro che Python esegua ~ l'espansione).

EDIT : ~ L'espansione non sembra essere supportata da sys.path (almeno su Mac).

La console Python di QGIS è creata da un modulo Python, "console.py". Quindi, se vuoi aggiungere il tuo percorso personalizzato al suo sys.path in modo più permanente, modifica il file console.py e aggiungi l'istruzione sys.path.append ('path / to / my / scripts') dopo il modulo sezione importazioni.

console.py si trova qui (per Mac, usando il pacchetto QGIS di KyngChaos.com ):

/Applications/QGIS.app/Contents/Resources/python/qgis/console.py

Naturalmente, questo è un hack che verrà cancellato e dovrà essere rifatto su un aggiornamento QGIS.app.

Qualsiasi adattamento al sys.path dell'interprete Python di QGIS in esecuzione è disponibile anche per altri plugin.

Un'alternativa più sicura potrebbe essere quella di creare un semplice plug-in di sviluppo PyQGIS che carichi e esegua semplicemente sys.path.append (), ogni volta che lo desideri. Potrebbe anche rimuovere quel percorso da sys.path sul plugin unload (). Non ho testato se la regolazione sys.path di un tale plugin sarebbe disponibile in una console già caricata (suppongo che lo sarebbe.)


Il tuo Hack sta funzionando bene per me finora. Grazie mille. Su Ubuntu 12.04, il file si trova in /usr/share/pyshared/qgis/console.py
Renaud

Eccellente! A proposito, avevo bisogno di riavviare il mio QGIS su Windows 7 per rendere la console Python consapevole del percorso aggiunto.
Dirk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.