【问题标题】:Qt platform plugin 'windows' - py2exeQt 平台插件'windows' - py2exe
【发布时间】:2015-08-25 18:51:59
【问题描述】:

我知道有很多关于这个问题的帖子(我都读过)。 但是我的exe还是有问题,还是打不开。

我尝试使用我的 exe 将 qwindows.dll(我尝试使用 3 个不同的 qwindows.dll)放在文件夹 dist 中,但没有改变任何内容。

我试过libEGL.dll,没有。

有什么建议吗?有没有办法避免这个问题?

【问题讨论】:

  • 请以更详细的方式解释您的问题。也就是说,这个问题什么时候出现,你想达到什么目的,你尝试了哪些方法来解决它等等。

标签: python user-interface py2exe pyqt5


【解决方案1】:

对我来说,将qwindows.dll 复制到platforms 文件夹就足够了,就像@Inktvisje 写的那样。

不要重复我的错误:不要从互联网上下载这个dll!从您的 Python 库文件夹中复制它:YourPythonFolder\Lib\site-packages\PyQt5\plugins\platforms

【讨论】:

    【解决方案2】:

    试试:

    from setuptools import setup
    import platform
    from glob import glob
    from main import __version__, __appname__, __author__, __author_email__
    
    
    SETUP_DICT = {
    
        'name': __appname__,
        'version': __version__,
        'description': 'description',
        'author': __author__,
        'author_email': __author_email__,
    
        'data_files': (
            ('', glob(r'C:\Windows\SYSTEM32\msvcp100.dll')),
            ('', glob(r'C:\Windows\SYSTEM32\msvcr100.dll')),
            ('platforms', glob(r'C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll')),
            ('images', ['images\logo.png']),
            ('images', ['images\shannon.png']),
        ),
    
        'options': {
            'py2exe': {
                'bundle_files': 1,
                'includes': ['sip', 'PyQt5.QtCore'],
            },
        }
    }
    
    if platform.system() == 'Windows':
        import py2exe
        SETUP_DICT['windows'] = [{
            'script': 'main.py',
            'icon_resources': [(0, r'images\logo.ico')]
        }]
        SETUP_DICT['zipfile'] = None
    
    setup(**SETUP_DICT)
    

    手动复制依赖是一种不好的方法,因为 py2exe 会处理它。使用 pyqt5,此设置有效,但如果我在没有 pyqt 的其他计算机上尝试安装 exe 崩溃。我迁移到 pyqt4 并在所有计算机上运行。

    【讨论】:

    • Anaconda python 发行版可能会将文件放在稍微不同的位置<PYTHON>\Library\plugins\platforms\qwindows.dll
    • 你只需要修改platforms这一行,把地址放到qwindows.dll
    【解决方案3】:

    我也遇到过这个问题,经过大量挖掘,我找到了以下解决方案:

    将以下文件复制到您的主 .exe 旁边: libEGL.dll

    将以下文件复制到主 .exe 旁边的文件夹“平台”中: qwindows.dll

    将 qwindows.dll 放在子文件夹中是我认为的重要部分,希望这会有所帮助

    【讨论】:

    • 这行得通(我从 PyQt5 复制了文件夹 platformspluginstranslations 到主 .exe 文件夹中可以肯定)
    • 太棒了...我希望我可以多次投票。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2016-11-16
    • 2019-10-26
    • 2017-03-01
    • 2020-10-05
    相关资源
    最近更新 更多