Problème avec l'importation qgis.core lors de l'écriture d'un script PyQGIS autonome

18

J'essaie d'écrire un script python autonome dans Windows 7 qui utilise qgis.core et diverses autres bibliothèques qgis.

J'ai trouvé une vieille question à ce sujet ici: Écrire des scripts Python autonomes en utilisant PyQGIS? et suivait ses conseils, en utilisant le guide ici: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications

Le code suggéré est:

set PYTHONPATH=c:\qgispath\python

suivi par:

set PATH=C:\qgispath;%PATH%

J'ai trouvé que IDLE n'aimait pas le "set au début, donc mon code ressemble à ceci:

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

et je reçois:

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

J'ai essayé toutes les variantes des chemins auxquels je peux penser, y compris la suppression du;% PATH% "à la fin (cela semble un peu superflu) mais je n'ai pas pu trouver plus d'informations. Est-ce que quelqu'un a des idées où je pourrais être va mal?

ÉDITER:

Après avoir vu le commentaire de Luigi Pirelli, j'ai maintenant essayé:

>>> 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
>>> 
user24956
la source
Pouvez-vous s'il vous plaît modifier le titre de votre question de la façon dont il décrirait le problème exact auquel vous êtes confronté?
SS_Rebelious
définissez PYTHONPATH comme valeur que vous pouvez lire en tapant "qgis" dans la console QGIS Python ... quelle est la valeur? Dans mon cas: <module 'qgis' de 'C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis_ init_ .pyc'> => Je dois ajouter à PYTHONPATH le chemin: "C: / OSGEO4 ~ 1 / apps / qgis-dev /./ python \ qgis "
Luigi Pirelli
Titre modifié, merci, je vais essayer ceci et rapporter dans le corps de la question
user24956
1
Toujours pas de chance, j'ai essayé de nombreuses permutations de PATH et PYTHONPATH en vain.
user24956

Réponses:

12

Si vous avez installé QGIS via OSGeo4W, je vous suggère de suivre ce flux de travail (je viens de le tester sur Windows 7):

  1. Ouvrez le shell OSGeo4W . Start->All programs->OSGeo4W->OSGeo4W Shell.

  2. Définissez les variables d'environnement . Ma façon préférée est d'exécuter ce fichier bat (mis à jour 2016.11.03: ce fichier bat ) à partir du shell OSGeo4W. Comme vous pouvez le voir, le fichier définit les variables d'environnement de cette manière:

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

    Bien sûr, vous devez vérifier par vous-même que ces chemins existent dans votre système d'exploitation et les ajuster si nécessaire.

    Alors, téléchargez le fichier .bat et exécutez-le en y accédant à partir du shell OSGeo4W et en appuyant sur ENTRÉE.

    entrez la description de l'image ici

  3. Importez des bibliothèques PyQGIS par l'une des méthodes suivantes:

    une. Entrez l'interpréteur Python. Exécutez pythondans le shell OSGeo4W et importez les bibliothèques manuellement.

    entrez la description de l'image ici

    b. Exécutez un script Python. Exécutez python my_pyqgis_script.pydans le shell OSGeo4W. Je commencerais par un très simple .

    entrez la description de l'image ici

Le flux de travail a été publié (en espagnol) il y a plusieurs années dans GeoTux et fonctionne toujours. Comme vous pouvez le voir, je n'inclus pas de variables d'environnement dans le script Python, mais je les place dans le shell OSGeo4W.

Germán Carrillo
la source
Salut! J'ai un doute là-dessus. Pourquoi var_entorno_osgeo4w.bat? J'ai fait toutes ces lignes mais dans ce parte me donne une erreur. J'ai également lu ces foruns d'aide et j'obtiens toujours l'erreur d'importation qgis.core (exécutée dans le shell osgeo4w).
Bárbara Duarte
Parce que c'est le nom du fichier que je vous fournis pour définir les variables d'environnement. Donc, vous allez dans le dossier où se trouve ce fichier .bat (dans les images que vous voyez qu'il se trouve C:\dllo) et exécutez le fichier .bat en écrivant le nom du fichier et en appuyant sur Entrée.
Germán Carrillo
J'ai essayé d'utiliser la solution ci-dessus - j'ai essayé d'exécuter my_pygis_script.py et d'obtenir une erreur d'importation: aucun module nommé qgis.core. Comment puis-je réparer cela?
kflaw
J'ai également essayé d'importer qgis.core dans pyscripter, et j'obtiens une autre erreur d'importation: aucun module nommé sip
kflaw
1
J'obtiens «Aucun module nommé qgis.core» si j'essaie la méthode suggérée ici. Si j'utilise python.exe dans qgis / bin comme interprète, j'obtiens l'erreur «aucun module nommé site» lorsque j'essaie d'importer qgis.core. J'ai perdu de nombreuses heures à essayer d'utiliser des pyqgis.
Alexander
6

Je viens de me battre avec un problème similaire et j'ai remarqué un fichier de commandes dans le dossier OSGeo4W \ bin appelé python-qgis.bat . Cela fait partie d'une installation basée sur le package OSGeo4W de QGIS 2.18.15 x64 sur Windows 10.

Une fois exécuté, ce fichier de commandes ouvre l'interpréteur Python. import qgiss'exécute avec succès de l'intérieur.

Ce fichier batch contient la ligne (comme l'a noté Germán Carrillo dans sa réponse originale):

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

juste avant le lancement de l'interpréteur python.

Andy Harfoot
la source
cela enlève la douleur de configurer manuellement les variables d'environnement, merci
Hicham Zouarhi
Cela semble commencer à fonctionner, mais génère une erreur "SyntaxError: syntaxe non valide" lors de l'exécution de C: \ OSGEO4 ~ 1 \ apps \ Python37 \ lib \ site.py
Donny V.
La raison pour laquelle j'ai eu cette erreur est que je n'exécutais pas le python utilisé par QGIS. Fonctionne maintenant!
Donny V.