banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 02 June 2021 16:39

nmor
Juste Inscrit !
Date d'inscription: 1 Jun 2021
Messages: 2

QGIS: Lancer un executable via un plugin QGIS


Bonjour à tous,

J’ai développé un plugin sur Qgis2.18 en python 2 (qui fonctionne sous un environnement linux) et j’essaye aujourd’hui de convertir mon code vers python3 pour que je puisse l’utiliser sur Qgis3.18 et directement dans un environnement Windows.

Mon plugin récupère des informations de type texte que l’utilisateur renseigne, et exécute un .exe avec la fonction subprocess.Popen et c’est là que je bloque

Code:

import subprocess
proc = subprocess.Popen(['Traitement_2.exe', r"cd C:/Users/Utilisateur/Traitement"],stdout=subprocess.PIPE, stderr=subprocess.PIPE,encoding = "ISO-8859-1", shell=True, text=True)
print(proc.stdout)
while True:
    lecture = proc.stdout.readline()
   
    
    print (lecture)
    if 'FIN' in lecture:
        print('Le Traitement est fini')
        break


Si je lance ce code python dans une invite de commande sous windows (en faisant py test_py2.py), mon programme Traitement_2.exe se lance et me renvoie des chaines de caractère (et seulement des chaines de caractère) en affichage dans la console comme ceci :
**************************************
      TRAITEMENT 2 DE MESRI
      CREATION DES FICHIERS :
- CARTE DU RÉSEAU HYDROGRAPHIQUE
- CARTE DES AIRES DRAINÉES PAR PIXEL
- CARTE DES DISTANCES VERSANT
- CARTE DES DISTANCE RÉSEAU
- CARTE DES CRÊTES
**************************************
**************************************
**************************************
IDENTIFICATION DES CRÊTES
**************************************
**************************************
CALCUL DES AIRES DRAINÉES

Or quand je mets ce code dans mon plugin.py (plugin de Qgis), rien ne se lance. Je n’ai pas d’erreur non plus, j’ai simplement l’impression que rien ne se passe. La variable lecture est de type  mais est vide.


Avez-vous une solution ou une piste de réflexion ?

Merci d’avance

Hors ligne

 

#2 Fri 18 June 2021 14:57

nmor
Juste Inscrit !
Date d'inscription: 1 Jun 2021
Messages: 2

Re: QGIS: Lancer un executable via un plugin QGIS

Bonjour à tous,
J’ai développé un plugin sur Qgis2.18 en python 2 (qui fonctionne sous un environnement linux) et j’essaye aujourd’hui de convertir mon code vers python3 pour que je puisse l’utiliser sur Qgis3.18 et directement dans un environnement Windows.

Mon plugin récupère des informations de type texte que l’utilisateur renseigne, et exécute un .exe avec la fonction subprocess. Quand j'exécute le code sur spyder ou pycharm et je viens dans QGIS pour lancer les traitements par exemple je le traitement 1 , je reçois comme message d'erreur 'Traitement_1.exe' n'est pas reconnu en tant que commande interne ou externe. Par contre lors que j'exécute le même code via la console python de QGIS , je reçois comme message d'erreur
Traceback (most recent call last):
  File "C:\OSGEO4~1\apps\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "<string>", line 23, in <module>
  File "C:/OSGEO4~1/apps/qgis/./python\qgis\utils.py", line 798, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ModuleNotFoundError: No module named '__console__'

Avez vous une idée?

Hors ligne

 

Pied de page des forums

Powered by FluxBB