#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