Problema con import qgis.core durante la scrittura di uno script PyQGIS autonomo


18

Sto cercando di scrivere uno script Python autonomo in Windows 7 che utilizza qgis.core e varie altre librerie qgis.

Ho trovato una vecchia domanda su questo argomento qui: Scrivere script Python autonomi usando PyQGIS? e stava seguendo i suoi consigli, usando la guida qui: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

Il codice suggerito è:

set PYTHONPATH=c:\qgispath\python

seguito da:

set PATH=C:\qgispath;%PATH%

Ho scoperto che IDLE non ha gradito il "set all'inizio, quindi il mio codice è simile al seguente:

PYTHONPATH="C:\OSGeo4W64\apps\qgis\python"
PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
import qgis.core

e ottengo:

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core

Ho provato ogni variante dei percorsi che mi viene in mente di includere la rimozione di;% PATH% "alla fine (che sembra un po 'superfluo) ma non sono stato in grado di trovare ulteriori informazioni. Qualcuno ha qualche idea su dove potrei essere andare storto?

MODIFICARE:

Dopo aver visto il commento di Luigi Pirelli ho provato ora:

>>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> PATH="C:/OSGEO4~1/apps/qgis/./python\qgis\core;%PATH%"
>>> import qgis.core

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    import qgis.core
ImportError: No module named qgis.core
>>> 

Puoi per favore modificare il titolo della tua domanda nel modo in cui illustrerebbe l'esatto problema che stai affrontando?
SS_Rebelious

imposta PYTHONPATH come il valore che puoi leggere digitando "qgis" nella Console QGIS Python ... qual è il valore? Nel mio caso: <modulo 'qgis' da 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc'> => Devo aggiungere a PYTHONPATH il percorso: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli,

Titolo modificato, grazie, lo proverò e
riferirò

1
Ancora nessuna fortuna, ho provato molte permutazioni di PATH e PYTHONPATH senza risultati.
user24956

Risposte:


12

Se hai installato QGIS tramite OSGeo4W, ti suggerisco di seguire questo flusso di lavoro (l'ho appena testato su Windows 7):

  1. Apri la shell OSGeo4W . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Imposta le variabili di ambiente . Il mio modo preferito è eseguire questo file bat (aggiornato il 11.11.2016: questo file bat ) dalla shell OSGeo4W. Come puoi vedere, il file imposta le variabili d'ambiente in questo modo:

    set PYTHONPATH=%OSGEO4W_ROOT%\\apps\\qgis\\python
    set PATH=%OSGEO4W_ROOT%\\apps\\qgis\\bin;%PATH%

    Naturalmente, è necessario verificare da soli che tali percorsi esistano nel proprio sistema operativo e modificarli, se necessario.

    Quindi, scarica il file .bat ed eseguilo accedendo da OSGeo4W Shell e premendo INVIO.

    inserisci qui la descrizione dell'immagine

  3. Importa le librerie PyQGIS con uno dei seguenti metodi:

    un. Immettere l'interprete Python. Esegui pythonin OSGeo4W Shell e importa le librerie manualmente.

    inserisci qui la descrizione dell'immagine

    b. Esegui uno script Python. Esegui python my_pyqgis_script.pynella shell OSGeo4W. Vorrei iniziare con uno molto semplice .

    inserisci qui la descrizione dell'immagine

Il flusso di lavoro è stato pubblicato (in spagnolo) diversi anni fa in GeoTux e funziona ancora. Come puoi vedere, non includo le variabili di ambiente nello script Python, ma le inserisco nella shell OSGeo4W.


Ciao! Ne dubito. Perché var_entorno_osgeo4w.bat? Ho fatto tutte queste righe ma in questa parte mi dà un errore. Inoltre ho letto in questi foruns di aiuto e ottengo ancora l'errore import qgis.core (eseguito nella shell osgeo4w).
Bárbara Duarte,

Perché questo è il nome del file che ti sto fornendo per impostare le variabili di ambiente. Quindi, vai nella cartella in cui si trova quel file .bat (nelle immagini che vedi si trova in C:\dllo) ed esegui il file .bat scrivendo il nome del file e premendo Invio.
Germán Carrillo,

Ho provato a utilizzare la soluzione sopra - ho provato a eseguire my_pygis_script.py e ho ricevuto un errore di importazione: nessun modulo chiamato qgis.core. Come posso risolvere questo problema?
kflaw,

Ho anche provato a importare qgis.core in pyscripter e ho ricevuto un altro errore di importazione: nessun modulo chiamato sip
kflaw

1
Ottengo "Nessun modulo di nome qgis.core" se provo il metodo suggerito qui. Se uso python.exe in qgis / bin come interprete, visualizzo l'errore "no module name site" quando provo a importare qgis.core. Ho sprecato molte ore a cercare di usare il pyqgis.
Alexander

6

Ho appena lottato con un problema simile e ho notato un file batch nella cartella OSGeo4W \ bin chiamato python-qgis.bat . Questo fa parte di un'installazione basata su pacchetto OSGeo4W di QGIS 2.18.15 x64 su Windows 10.

Quando eseguito, questo file batch apre l'interprete Python. import qgisfunziona con successo dall'interno.

Questo file batch contiene la riga (come notato da Germán Carrillo nella sua risposta originale):

set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%PYTHONPATH%

poco prima del lancio dell'interprete Python.


questo toglie il dolore di configurare manualmente le variabili di ambiente, grazie
Hicham Zouarhi

Questo sembra iniziare a funzionare ma genera un errore "SintassiErrore: sintassi non valida" quando si esegue C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.

Il motivo per cui ho riscontrato questo errore è perché non stavo eseguendo il pitone utilizzato da QGIS. Funziona ora!
Donny V.
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.