web-dev-qa-db-fra.com

Conversion du fichier py en exe, impossible de trouver les répertoires du plug-in PyQt5 existants

Phyton est un nouveau venu et je viens juste de terminer ma première application. Maintenant, j'essaie de compiler mon fichier .py en un fichier .exe qui semble ne pas fonctionner. J'ai cherché partout une solution à mon problème, mais je n'arrive pas à en trouver une. 

Quand j'exécute cette commande: pyinstaller gui.py

cette erreur apparaît:

4815 INFO: Loading module hooks...
4815 INFO: Loading module hook "hook-encodings.py"...
4913 INFO: Loading module hook "hook-pydoc.py"...
4913 INFO: Loading module hook "hook-PyQt5.py"...
5019 WARNING: Hidden import "PyQt5.sip" not found!
5019 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
5096 WARNING: Unable to find Qt5 translations C:/qt5b/qt_1524647842210/_h_env/Library/translations\qtbase_*.qm. These translations were not packaged.
5096 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
Traceback (most recent call last):
  File "c:\users\ivo\anaconda3\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\ivo\anaconda3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Ivo\Anaconda3\Scripts\pyinstaller.exe\__main__.py", line 9, in <module>
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 111, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 838, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 784, in build
    exec(text, spec_namespace)
  File "<string>", line 17, in <module>
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 241, in __init__
    self.__postinit__()
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__
    self.assemble()
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\build_main.py", line 500, in assemble
    module_hook.post_graph()
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\imphook.py", line 410, in post_graph
    self._load_hook_module()
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\building\imphook.py", line 377, in _load_hook_module
    self.hook_module_name, self.hook_filename)
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\compat.py", line 736, in importlib_load_source
    return mod_loader.load_module()
  File "<frozen importlib._bootstrap_external>", line 399, in _check_name_wrapper
  File "<frozen importlib._bootstrap_external>", line 823, in load_module
  File "<frozen importlib._bootstrap_external>", line 682, in load_module
  File "<frozen importlib._bootstrap>", line 265, in _load_module_shim
  File "<frozen importlib._bootstrap>", line 684, in _load
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\hooks\hook-PyQt5.QtGui.py", line 11, in <module>
    hiddenimports, binaries, datas = add_qt5_dependencies(__file__)
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 514, in add_qt5_dependencies
    more_binaries = qt_plugins_binaries(plugin, namespace=namespace)
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 132, in qt_plugins_binaries
    pdir = qt_plugins_dir(namespace=namespace)
  File "c:\users\ivo\anaconda3\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 117, in qt_plugins_dir
    """.format(namespace, ", ".join(paths)))
Exception:
            Cannot find existing PyQt5 plugin directories
            Paths checked: C:/qt5b/qt_1524647842210/_h_env/Library/plugins

Ma variable de chemin:

C:\Users\Ivo\Anaconda3;C:\Users\Ivo\Anaconda3\Library\mingw-w64\bin;C:\Users\Ivo\Anaconda3\Library\usr\bin;C:\Users\Ivo\Anaconda3\Library\bin;C:\Users\Ivo\Anaconda3\Scripts;C:\Users\Ivo\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Ivo\AppData\Local\Programs\Python\Python36-32\;C:\Users\Ivo\AppData\Local\Microsoft\WindowsApps;C:\Users\Ivo\AppData\Roaming\Composer\vendor\bin;C:\Users\Ivo\AppData\Local\atom\bin;C:\scrcpy-windows-v1.0\adb.exe;D:\xampp2\php;C:\Users\Ivo\AppData\Roaming\npm;

J'essaie de résoudre ce problème depuis un jour entier maintenant, si quelqu'un pouvait m'aider/me diriger dans la bonne direction, ce qui serait grandement apprécié.

modifier:

En outre, depuis que j'ai réinstallé certaines choses pour essayer de résoudre le problème. le fichier ne démarre pas et donne cette erreur:

Traceback (most recent call last):
  File "C:\Users\Ivo\Documents\temp\project\gui.py", line 9, in <module>
    from PyQt5 import QtCore, QtGui, QtWidgets
ImportError: DLL load failed: The specified procedure could not be found.
1
xVivio

Conda 4.5.11, Python 3.6.4, PyInstaller 3.4

Le chemin du plug-in est déterminé de manière incorrecte dans hooks/qt.py. Qt requiert que QCoreApplication soit instancié en premier, avant tout autre appel.

Mon hook qt.py se trouve dans ~\anaconda3\Lib\site-packages\PyInstaller\utils\hooks\qt.py.

Je l'ai édité comme suit:

    json_str = exec_statement("""
        import sys

        # exec_statement only captures stdout. If there are
        # errors, capture them to stdout so they can be displayed to the
        # user. Do this early, in case PyQt5 imports produce stderr
        # output.
        sys.stderr = sys.stdout

        import json
        from %s.QtCore import QLibraryInfo, QCoreApplication

        # QLibraryInfo isn't always valid until a QCoreApplication is
        # instantiated.
        app = QCoreApplication([])
        paths = [x for x in dir(QLibraryInfo) if x.endswith('Path')]
        location = {x: QLibraryInfo.location(getattr(QLibraryInfo, x))
                    for x in paths}
        try:
            version = QLibraryInfo.version().segments()
        except AttributeError:
            version = None
        print(str(json.dumps({
            'isDebugBuild': QLibraryInfo.isDebugBuild(),
            'version': version,
            'location': location,
        })))
    """ % self.namespace)

voir 1 .

4
Aldo

J'utilise Python 3.6.3 avec ANACONDA3 et Spyder comme IDE. Pyinstaller 3.4.

Essayer de générer un fichier exe avec Pyinstaller , j’ai eu deux types d’erreurs:

  1. "AttributeError: l'objet 'str' n'a pas d'attribut 'items'" . Ce problème a été résolu par en mettant à jour chaque module importé dans le script Python avec: pip install --upgrade < nom_module >
  2. "Impossible de trouver les répertoires du plug-in PyQt5 existants" : c'était l'erreur suivante. Comme Mentionné par congu yu dans son précédent post, j'ai résolu ce problème en exécutant pip install PyQt5

  3. N'oubliez pas de mettre à jour setuptools vers la dernière version 

Le processus a fourni un fichier exe que je n'ai pas encore testé. Mais au moins, j'ai réussi à obtenir Pyinstaller à la fin sans erreur d'erreur.

J'espère que cela pourrait être utile

Et au fait, bonne année :)

Modifier

J'ai testé le fichier autonome .exe produit par py2exe . Le programme est en cours d'exécution et se termine sans erreur.

Mais le problème est que xlsx n'est plus en cours d'exécution, car aucun fichier Excel N'est créé. Ces fichiers sont basés sur pandas dataframes. Mon indice est que le module pandas , qui est le noyau principal du programme, Semble avoir été modifié. J'ai remarqué que les images utilisées étaient tronquées, Par les lignes de contrôle éditées dans Ipython console dans Spyder .

Je pense que ma meilleure alternative est de réinstaller Anaconda3 .

Soyez donc prudent, mettez à niveau les modules utilisés dans le programme que vous voulez en tant que Autonome avec py2exe . Il semble que la modernisation du module pandas ait été une erreur de .

Je suis désolé, si j’avais donné un mauvais conseil dans mon message principal, mais la mise à niveau était le meilleur moyen D’exécuter py2exe . Soyez prudent avec la mise à niveau de pandas .

1
Eric X

Essayez de désinstaller Anaconda. Il y a eu des problèmes dans le passé. Sinon, vous pouvez essayer py2exe qui est assez décent aussi.

0
Vishnu Kiran

Essayez le correctif dans Exception: impossible de trouver les répertoires du plugin PyQt5 lorsqu’on utilise Pyinstaller alors que PyQt5 n’est même pas utilisé . En bref: 

pip intall PyQt5

Notez que, curieusement, conda install PyQt5 peut ne pas résoudre le problème. 

J'ai rencontré le même problème et ai vu une autre suggestion: créer le répertoire manquant (C:/qt5b/qt_1524647842210/_h_env/Library/plugins dans votre cas) et copier les deux fichiers pyqt5.dll et pyqt5qmlplugin.dll (probablement quelque part dans c:\Utilisateurs [nom]\AppData\Local\conda\conda\envs) dans le répertoire. 

Je ne l'ai pas essayé depuis que j'ai corrigé le problème avec pip install PyQt5. Vous voudrez peut-être essayer.

0
cong yu