IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Déploiement/Installation Python Discussion :

Pyinstaller - Problème pour transformer mon script en exe


Sujet :

Déploiement/Installation Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Pyinstaller - Problème pour transformer mon script en exe
    Bonjour,

    J'ai récemment fait un script pour comparer un fichier Shapefile (.shp) avec un csv. Si jamais il y a une erreur, cela ressort dans un fichier excel (au niveau de la racine du fichier Shapefile). Afin de pouvoir faciliter l'utilisation des personnes, avec lesquelles je voulais partager, j'ai créé une interface assez basique avec PyQt5.

    Quand je le lance sur mon Jupyter Notebook, tout fonctionne bien. J'arrive aussi à le transformer en .exe à l'aide de cx_Freeze. Néanmoins, voulant un single-file executable. J'ai décidé de passer par PyInstaller. Néanmoins à chaque fois, je le lance et que j'essaie d'ouvrir mon exe, j'ai cette magnifique fenêtre que s'ouvre :

    Nom : Capture.PNG
Affichages : 2189
Taille : 10,0 Ko

    Ci-dessous, vous retrouverez ce que le cmd me répond quand je rentre la commande pyinstaller --onefile --windowed CompareCSVSHP.py"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    C:\Users\x-trm\Desktop>pyinstaller --onefile --windowed CompareMediapost.py
    83 INFO: PyInstaller: 3.5
    83 INFO: Python: 3.6.6
    83 INFO: Platform: Windows-10-10.0.17134-SP0
    85 INFO: wrote C:\Users\x-trm\Desktop\CompareMediapost.spec
    89 INFO: UPX is not available.
    Traceback (most recent call last):
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "C:\Users\x-trm\Downloads\WPy-3662\python-3.6.6.amd64\Scripts\pyinstaller.exe\__main__.py", line 9, in <module>
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\__main__.py", line 111, in run
        run_build(pyi_config, spec_file, **vars(args))
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build
        PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 844, in main
        build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 791, in build
        exec(code, spec_namespace)
      File "C:\Users\x-trm\Desktop\CompareMediapost.spec", line 17, in <module>
        noarchive=False)
      File "c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 190, in __init__
        raise ValueError("script '%s' not found" % script)
    ValueError: script 'C:\Users\x-trm\Desktop\CompareMediapost.py' not found
     
    C:\Users\x-trm\Desktop>pyinstaller --onefile --windowed CompareCSVSHP.py
    90 INFO: PyInstaller: 3.5
    90 INFO: Python: 3.6.6
    92 INFO: Platform: Windows-10-10.0.17134-SP0
    97 INFO: wrote C:\Users\x-trm\Desktop\CompareCSVSHP.spec
    100 INFO: UPX is not available.
    106 INFO: Extending PYTHONPATH with paths
    ['C:\\Users\\x-trm\\Desktop', 'C:\\Users\\x-trm\\Desktop']
    106 INFO: checking Analysis
    107 INFO: Building Analysis because Analysis-00.toc is non existent
    108 INFO: Initializing module dependency graph...
    118 INFO: Initializing module graph hooks...
    124 INFO: Analyzing base_library.zip ...
    7392 INFO: running Analysis Analysis-00.toc
    7420 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
      required by c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\python.exe
    10758 INFO: Caching module hooks...
    10776 INFO: Analyzing C:\Users\x-trm\Desktop\CompareCSVSHP.py
    14995 INFO: Processing pre-find module path hook   distutils
    15626 INFO: Processing pre-find module path hook   site
    15640 INFO: site: retargeting to fake-dir 'c:\\users\\x-trm\\downloads\\wpy-3662\\python-3.6.6.amd64\\lib\\site-packages\\PyInstaller\\fake-modules'
    21301 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
    30185 INFO: Processing pre-safe import module hook   six.moves
    37141 INFO: Loading module hooks...
    37141 INFO: Loading module hook "hook-distutils.py"...
    37146 INFO: Loading module hook "hook-encodings.py"...
    37260 INFO: Loading module hook "hook-lib2to3.py"...
    37273 INFO: Loading module hook "hook-numpy.core.py"...
    38843 INFO: Loading module hook "hook-numpy.py"...
    38844 INFO: Loading module hook "hook-osgeo.py"...
    38910 INFO: Loading module hook "hook-pkg_resources.py"...
    40205 INFO: Processing pre-safe import module hook   win32com
    41015 INFO: Loading module hook "hook-pycparser.py"...
    41213 INFO: Loading module hook "hook-pydoc.py"...
    41214 INFO: Loading module hook "hook-PyQt5.py"...
    41921 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
    43357 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
    45474 INFO: Loading module hook "hook-PyQt5.QtWidgets.py"...
    47276 INFO: Loading module hook "hook-pytest.py"...
    48675 INFO: Loading module hook "hook-pythoncom.py"...
    49603 INFO: Loading module hook "hook-pywintypes.py"...
    50525 INFO: Loading module hook "hook-scipy.py"...
    50530 INFO: Loading module hook "hook-setuptools.py"...
    51931 INFO: Loading module hook "hook-sysconfig.py"...
    51933 INFO: Loading module hook "hook-win32com.py"...
    53069 INFO: Loading module hook "hook-xml.dom.domreg.py"...
    53071 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
    53073 INFO: Loading module hook "hook-xml.py"...
    53126 INFO: Looking for ctypes DLLs
    53178 INFO: Analyzing run-time hooks ...
    53186 INFO: Including run-time hook 'pyi_rth_osgeo.py'
    53189 INFO: Including run-time hook 'pyi_rth_pkgres.py'
    53191 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'
    53194 INFO: Including run-time hook 'pyi_rth_multiprocessing.py'
    53199 INFO: Including run-time hook 'pyi_rth_pyqt5.py'
    53219 INFO: Looking for dynamic libraries
    93683 INFO: Looking for eggs
    93683 INFO: Using Python library c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\python36.dll
    93685 INFO: Found binding redirects:
    []
    93700 INFO: Warnings written to C:\Users\x-trm\Desktop\build\CompareCSVSHP\warn-CompareCSVSHP.txt
    93895 INFO: Graph cross-reference written to C:\Users\x-trm\Desktop\build\CompareCSVSHP\xref-CompareCSVSHP.html
    93942 INFO: checking PYZ
    93942 INFO: Building PYZ because PYZ-00.toc is non existent
    93944 INFO: Building PYZ (ZlibArchive) C:\Users\x-trm\Desktop\build\CompareCSVSHP\PYZ-00.pyz
    95721 INFO: Building PYZ (ZlibArchive) C:\Users\x-trm\Desktop\build\CompareCSVSHP\PYZ-00.pyz completed successfully.
    95765 INFO: checking PKG
    95765 INFO: Building PKG because PKG-00.toc is non existent
    95767 INFO: Building PKG (CArchive) PKG-00.pkg
    96236 WARNING: One binary added with two internal names.
    96237 WARNING: ('libGLESv2.dll',
     'C:\\users\\x-trm\\downloads\\wpy-3662\\python-3.6.6.amd64\\lib\\site-packages\\PyQt5\\Qt\\bin\\libGLESv2.dll',
     'BINARY')
    96239 WARNING: was placed previously at
    96242 WARNING: ('PyQt5\\Qt\\bin\\libGLESv2.dll',
     'C:\\users\\x-trm\\downloads\\wpy-3662\\python-3.6.6.amd64\\lib\\site-packages\\PyQt5\\Qt\\bin\\libGLESv2.dll',
     'BINARY')
    125423 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
    125433 INFO: Bootloader c:\users\x-trm\downloads\wpy-3662\python-3.6.6.amd64\lib\site-packages\PyInstaller\bootloader\Windows-64bit\runw.exe
    125433 INFO: checking EXE
    125435 INFO: Building EXE because EXE-00.toc is non existent
    125435 INFO: Building EXE from EXE-00.toc
    125440 INFO: Appending archive to EXE C:\Users\x-trm\Desktop\dist\CompareCSVSHP.exe
    125520 INFO: Building EXE from EXE-00.toc completed successfully.
    Ci-dessous, les librairies que j'utilise et leur version (avec un Python 3.6.6) :

    PyQt - 5.13.0
    PyInstaller - 3.5
    XLWT - 1.3.0
    GDAL - 2.4.1
    NUMPY - 1.17
    CSV, OS, SYS, TEMPFILE

    Avez-vous déjà été confronté à ce problème et pouvez-vous m'aider à le résoudre ?

    Merci pour votre réponse.

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Points : 704
    Points
    704
    Par défaut
    bonjour,
    difficile de vous aider avec si peu d'information, à première vu je pencherais pour un problème de path (le .exe est décompressé dans un dossier temporaire, doc)
    si vous essayez sans onfile ? n si vous lancer le programme depuis un terminal (cmd par exemple) voyez vous une erreur ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Je vous remercie en tout cas pour votre réponse.

    Concernant vos différentes remarques. J'ai essayé de lancer l'exe via le cmd, néanmoins cela ne change pas.

    Cependant, j'ai quand même essayé de relancer PyInstaller avec les même paramètres et j'ai pu remarquer que quand je lançais pour la première fois l'exe, une fenêtre: "INTERNAL ERROR: cannot create temporary directory" s'affichait sur mon écran.

    J'ai aussi essayé de lancer le PyInstaller en retirant les options --onefile et --windowed. Quand je lance via windows, une fenêtre apparaît (type cmd), mais disparait aussitôt, et quand je le lance via cmd, j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Users\x-trm\Desktop>C:\Users\x-trm\Desktop\build\CompareCSVSHP\CompareCSVSHP.exe
    Error loading Python DLL 'C:\Users\x-trm\Desktop\build\CompareCSVSHP\python36.dll'.
    LoadLibrary: Le module spÚcifiÚ est introuvable.
    Sinon, pour vous aider, j'ai légérement modifié mon script, que vous pourrez retrouver ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    import os
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    import ogr
    import numpy as np
    import xlwt
    from tempfile import TemporaryFile
    from osgeo.gdalconst import * 
    import csv
     
    class Example(QWidget):
     
        def __init__(self, parent=None):
            super(Example, self).__init__(parent)
     
            self.initUI()
     
        def initUI(self):
     
            self.pbar = QProgressBar(self)
            self.pbar.setGeometry(25, 160, 400, 25)
     
            self.Information = QLabel('Donnees en cours de traitement :', self)
            self.Information.move(25,40)
            self.Information.setFixedWidth(400)
     
            self.Information2 = QLabel('Ouverture des donnees : ', self)
            self.Information2.move(25,80)
            self.Information2.setFixedWidth(400)
     
            self.timer = QBasicTimer()
            self.step = 0
     
            self.setGeometry(300, 300, 500, 200)
            self.setWindowTitle('En cours de traitement')
            self.show()
            self.timer.start(100, self)        
     
        def timerEvent(self, e):
     
            if self.step >= 100:
     
                self.timer.stop()
                return
     
            driver = ogr.GetDriverByName('ESRI Shapefile')
     
            self.Information2.setText("Ouverture et lecture du fichier CSV")
     
            LISTECOMPLET = []
            LISTEPOPULATION = []
     
            with open(CSVput, 'r') as f:
                reader = csv.reader(f, delimiter=';')
                newliste = list(reader)
                for elem in newliste :
                    NOMVILLE = newliste[3]
                    DEPARTEMENT = newliste[4]
                    COMPLET = str(NOMVILLE + DEPARTEMENT)
                    LISTECOMPLET.append(COMPLET)
                    POPULATION = newliste[5]
                    LISTEPOPULATION.append(POPULATION)
     
            self.Information2.setText("Ouverture et Comparaison Shape / CSV")
     
            NEWLISTECLE = []
            LISTECOMMUNENOTGOOD = ["COMMUNE"]
            LISTETYPEERREUR = ["TYPE ERREUR"]
            LISTEERREUR = ["LIBELLE_ERREUR"]
            SHAPEST = driver.Open(Input, 0)
            SHAPELAYER = SHAPEST.GetLayer()
            for index,SHAPEFEATURE in enumerate(SHAPELAYER) :
                self.step = 10 + int(round((index/len(SHAPELAYER)*80)))
                VILLESHP = str(SHAPEFEATURE.GetField("Commune"))
                DEPARTEMENTSHP = str(SHAPEFEATURE.GetField("Departement"))
                POPULAIONSHP = str(SHAPEFEATURE.GetField("Population"))
                if POPULATIONSHP == 'None' :
                    POPULATIONSHP = ''
                COMPLETSHP = str(VILLESHP + DEPARTEMENTSHP)
                try :        
                    POPULATIONCSV = str(LISTEPOPULATION[LISTECOMPLET.index(COMPLETSHP)])
                except :
                    POPULATIONCSV = ""
                if POPULATIONCSV : 
                    if POPULATIONSHP :
                        if POPULAIONSHP != POPULATIONCSV :
                            if POPULAIONSHP > POPULATIONCSV :
                                LISTECOMMUNENOTGOOD.append(COMPLETSHP)
                                LISTETYPEERREUR.append("ERREUR MAJEURE - POPULATION SHP > POPULATION CSV")
                                LISTEERREUR.append("Pour la commune " + COMPLETSHP + ", Dans le CSV, il y a marque que sa population est de " + POPULATIONCSV + " contre " + POPULATIONSHP + " renseigne ici" )
                            else :
                                LISTECOMMUNENOTGOOD.append(COMPLETSHP)
                                LISTETYPEERREUR.append("ERREUR MAJEURE - POPULATION SHP < POPULATION CSV")
                                LISTEERREUR.append("Pour la commune " + COMPLETSHP + ", Dans le CSV, il y a marque que sa population est de " + POPULATIONCSV + " contre " + POPULATIONSHP + " renseigne ici" )
                    else :
                        LISTECOMMUNENOTGOOD.append(COMPLETSHP)
                        LISTETYPEERREUR.append("ERREUR MAJEURE - ABSENCE POPULATION POUR COMMUNE PRESENTE DANS LE CSV")
                        LISTEERREUR.append("La commune " + COMPLETSHP + "n'a pas de population ici, cependant au vu du fichier CSV, la population devrait etre " + POPULATIONCSV)
                else :
    		LISTECOMMUNENOTGOOD.append(COMPLETSHP)
    		LISTETYPEERREUR.append("ERREUR MAJEURE - ABSENCE DE LA COMMUNE DANS LE FICHIER CSV")
    		LISTEERREUR.append("Au vu du fichier CSV, la COMMUNE " + COMPLETSHP + " n existe pas")
     
            self.Information2.setText("Export du fichier excel :")
     
            book = xlwt.Workbook()
            sheet1 = book.add_sheet('Erreurs')
     
            newliste = [LISTECOMMUNENOTGOOD, LISTETYPEERREUR, LISTEERREUR]
     
            newliste = list(np.transpose(newliste))
     
            for indexoflist,sublist in enumerate(newliste):
                for indexofsublist, elemofsublist in enumerate(sublist) :
                    sheet1.write(indexoflist,indexofsublist,elemofsublist)
     
            OutputFile = os.path.dirname(Input) + "/Erreurs.xls"
            book.save(OutputFile)
            book.save(TemporaryFile())
     
            self.step = 100
     
            self.pbar.setValue(self.step)
     
            self.Information.setText("Traitement fini")
     
            self.Information2.setText("Votre fichier a ete exporte a l'adresse du shp ")
            self.Information2.setWordWrap(True)    
     
     
    class Test(QWidget):
     
        def __init__(self, parent=None):
            super(Test, self).__init__(parent)
     
            self.initUI()
     
        def initUI(self):
     
            InputLabel = QLabel('Input Shapefile (.shp)')
            CSVLAbel = QLabel('Input CSV (.csv)')
     
            self.InputEdit = QLineEdit(self)
            self.CSVEdit = QLineEdit(self)
            btn1SearchInput = QPushButton('...', self)
            btn1SearchInput.resize(btn1SearchInput.sizeHint())
            btn2SearchOutput = QPushButton('...', self)
            btn2SearchOutput.resize(btn2SearchOutput.sizeHint())
            okButton = QPushButton("OK")
            cancelButton = QPushButton("Cancel")
     
            grid = QGridLayout()
            grid.setSpacing(10)
     
            grid.addWidget(InputLabel, 1, 0)
            grid.addWidget(self.InputEdit, 1, 1)
            grid.addWidget(btn1SearchInput, 1, 2)
     
     
            grid.addWidget(CSVLAbel, 2, 0)
            grid.addWidget(self.CSVEdit, 2, 1)
            grid.addWidget(btn2SearchOutput, 2, 2)
     
            grid.addWidget(okButton, 3, 2)
            grid.addWidget(cancelButton, 3, 3)      
     
            btn1SearchInput.clicked.connect(self.showDialogInput)
            btn2SearchOutput.clicked.connect(self.showDialogOutput)
            okButton.clicked.connect(self.OkDialog)
            cancelButton.clicked.connect(self.close)
     
            self.setGeometry(300, 300, 500, 200)
            self.setWindowTitle('Compare SHP - CSV') 
            self.setLayout(grid)
     
            self.show()
     
        def showDialogInput(self):
     
            fname = QFileDialog.getOpenFileName(self, 'Select Input Shapefile','', '*.shp') 
     
            if fname:
                self.InputEdit.setText(fname[0]) 
     
        def showDialogOutput(self):
     
            csvname = QFileDialog.getOpenFileName(self, 'Select Input CSV','', '*.csv')
     
            if csvname:
                self.CSVEdit.setText(csvname[0]) 
     
        def OkDialog(self):
     
            global Input
            Input = self.InputEdit.text()
            global CSVput
            CSVput = self.CSVEdit.text()
     
            if os.path.isfile(CSVput) is True : 
                if os.path.isfile(Input) is True : 
                    self.secondwindow = Example()
                    self.secondwindow.show()
                else :
                    QMessageBox.information(self, 'Message', 'Un (ou deux) des deux chemins renseignes est faux')
            else :
                QMessageBox.information(self, 'Message', 'Un (ou deux) des chemins renseignes est faux')
     
        def closeEvent(self, event):
     
            reply = QMessageBox.question(self, 'Message',
                "Etes vous sur de vouloir quitter ce programme ?", QMessageBox.Yes | 
                QMessageBox.No, QMessageBox.No)
     
            if reply == QMessageBox.Yes:
                event.accept()
            else:
                event.ignore()  
     
    if __name__ == '__main__':
     
        app = QApplication(sys.argv)
        ex = Test()
        sys.exit(app.exec_())
    Et encore merci de m'aider à régler ce problème ^^.

  4. #4
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Le problème semblait venir de mes librairies.

    En effet, j'ai du downgrade mon PyQt5 de 5.13.0 vers 5.12.2 et mon Numpy de 1.17.0 vers 1.16.2.

    En tout cas, merci pour votre aide.

    (Cette discussion peut donc être close)

Discussions similaires

  1. [Compiler] Problème pour compiler un script
    Par usama2 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/02/2007, 14h52
  2. [FluxBB] [punBB] Problèmes pour installer le script de forum Puntal
    Par Emcy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/02/2007, 08h45
  3. [VB6]problèmes pour executer mon projet en VB
    Par Walowalo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2006, 19h27
  4. Problème pour exécuter un script Perl
    Par jungle360 dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2006, 14h37
  5. [RegEx] Problème pour transformer les url en liens cliquable
    Par AlphaYoDa dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2006, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo