MTES-MCT / metadata-postgresql

Plume : gestion des métadonnées du patrimoine PostgreSQL
https://mtes-mct.github.io/metadata-postgresql/
GNU Affero General Public License v3.0
0 stars 1 forks source link

Echec de l'exécution des commandes pip #130

Closed alhyss closed 1 year ago

alhyss commented 1 year ago

La DGTM-DEAAF Guyane indique n'avoir pas réussi à installer Plume avec la version de QGIS distribuée sur les postes de leurs agents (version 3.16, paquet mis à disposition par le ministère de l'intérieur). Les commandes pip install envoyées via subprocess.run et supposées permettre l'installation des bibliothèques python nécessaires au fonctionnement de Plume échouent, car l'exécutable python.exe est introuvable.

WREATCHED commented 1 year ago

Réponse La solution a été de trouver où se trouve le path du pip.exe avec la fonction getPathPip

def getPathPip() :
    return dict( os.environ, PATH = os.environ['PATH'] + ( (";" + QgsApplication.systemEnvVars()['PYTHONHOME'].replace("\\","/") 
+ "/scripts") if 'PYTHONHOME' in QgsApplication.systemEnvVars() else "" ) )

puis de modifier l'environnement des lancements subprocess avec la variable env = getPathPip() dans les deux fonctions

def updatePip() :
    si = subprocess.STARTUPINFO() 
    si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    try:
       _sortie = subprocess.run(['python3', '-m', 'pip', 'install', '--upgrade', '--retries', '0', '--timeout', '5', '--quiet', '--quiet', '--quiet', 'pip'], check=True, startupinfo=si, env = getPathPip()) 
    except subprocess.CalledProcessError as err :
       return False
    return True
def updateRequierement(mPathPerso) :
    si = subprocess.STARTUPINFO() 
    si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    try:
       _sortie = subprocess.run(['python3', '-m', 'pip', 'install', '-r', mPathPerso], check=True, startupinfo=si, env = getPathPip() )
    except subprocess.CalledProcessError as err:
       return  False
    return True