web-dev-qa-db-ja.com

pyファイルをexeに変換、既存のPyQt5プラグインディレクトリが見つかりません

私はフィトンにかなり慣れていないので、最初のアプリケーションを完了しました。今、私は私の.pyファイルを動作しないように見える.exe購入にコンパイルしようとしています。私は問題の解決策をどこでも探しましたが、見つけられないようです。

このコマンドを実行すると:pyinstaller gui.py

このエラーが表示されます:

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

私のパス変数:

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;

私はこれを丸一日修正しようと努めてきました。

編集:

また、問題を修正するためにいくつかを再インストールしたので。ファイルが起動せず、このエラーが発生します:

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.
4
xVivio

Conda 4.5.11、Python 3.6.4、PyInstaller 3.4

プラグインパスは、hooks/qt.pyで誤って決定されます。 Qtでは、QCoreApplicationが他の呼び出しの前に最初にインスタンス化される必要があります。

私のqt.pyフックは〜\ anaconda3\Lib\site-packages\PyInstaller\utils\hooks\qt.pyにあります。

私はそれを次のように編集しました:

    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)

1 を参照してください。

8
Aldo

例外:PyQt5が使用されていなくてもPyinstallerを使用しているときにPyQt5プラグインディレクトリが見つからない で修正を試みてください。要するに:

pip intall PyQt5

不思議なことに、conda install PyQt5は問題を解決しない可能性があることに注意してください。

私は同じ問題に遭遇し、別の提案を見ました:不足しているディレクトリ(あなたのケースではC:/ qt5b/qt_1524647842210/_h_env/Library/plugins)を作成し、2つのファイルpyqt5.dllとpyqt5qmlplugin.dll(おそらくc:\のどこかに)をコピーしますUsers [name]\AppData\Local\conda\conda\envs)をディレクトリに追加します。

pip install PyQt5の問題を修正したので、試しませんでした。試してみてください。

1
mikey

Python 3.6.3をANACONDA3とSpyderをIDEとして使用しています。Pyinstaller3.4。

Pyinstallerでexeファイルを生成しようとすると、2種類のエラーが発生しました。

  1. "AttributeError: 'str' object has no attribute 'items'"。これは各モジュールを更新する Pythonスクリプトにインポートされたスクリプトで解決されました:pip install --upgrade < module_name>
  2. "既存のPyQt5プラグインディレクトリが見つかりません":これは次のエラーです。以前の投稿でcong yが述べたように、-pip install PyQt5を実行してこの問題を修正しました

  3. setuptoolsも最新バージョンにアップグレードすることを忘れないでください

プロセスは私がまだテストしていないexeファイルを提供しました。しかし、少なくとも、Pyinstallerはエラーなく失敗することなく終了しました。

これが役に立てば幸い

そして、ところで、新年あけましておめでとうございます:)

編集

私はスタンドアロンをテストしました。exepy2exeによって生成されましたプログラムは実行中であり、エラーなしで終了します。

しかし、問題はxlsxが実行されていないことです。Excelファイルが作成されないためです。これらのファイルはpandasデータフレームに基づいています。私のヒントは、プログラムのメインコアであるpandasモジュールが変更されているように見えることです。 IpythonコンソールのSpyderで編集された制御ラインを介して、使用されたデータフレームが切り捨てられていることに気付きました。

私の最良の代替案は、再インストールすることだと思いますAnaconda

そのため、スタンドアロンとして使用するプログラムで使用されるモジュールをpy2exeでアップグレードすることに注意してください。 pandasモジュールのアップグレードは間違いだったようです。

メインポストで悪いアドバイスをした場合は申し訳ありませんが、アップグレードがpy2exeを実行するための最良の方法でした。 pandasのアップグレードには注意してください。

1
Eric X

Anacondaをアンインストールしてみてください。過去に問題がありました。そうでない場合は、かなりまともなpy2exeを試すこともできます。

0
Vishnu Kiran

最新バージョンのPyInstallerをインストールしましたが、この"Cannot find existing PyQt5 plugin directories"の例外はaddressedです。

次のコマンド を使用して、最新バージョンのPyInstallerをインストールできます。

pip install https://github.com/pyinstaller/pyinstaller/tarball/develop

PS:私のセットアップに関するいくつかの情報:

$conda info
      conda version : 4.6.14
conda-build version : 3.17.8
     python version : 3.7.3.final.0
           platform : win-64
         user-agent : conda/4.6.14 requests/2.21.0 CPython/3.7.3 Windows/10 Windows/10.0.17763

$ pip show pyinstaller
Name: PyInstaller
Version: 3.5.dev0+d74052489
Summary: PyInstaller bundles a Python application and all its dependencies into a single package.
0
Zhenyu