使用 pyinstaller 将 pyqt 构建为 exe 后文件大小较大
为了将 PyQt 构建的 EXE 文件的大小减小,我们可以采用一些优化技巧。以下是使用 pyinstaller 进行打包时的一些建议步骤:

  1. 安装必要的插件:对于包含 GUI 的应用程序,我们需要安装额外的插件来减少最终可执行文件的体积。例如,可以使用 PyInstaller-hooks-contrib 提供的 PyQt5_plugins 插件来优化 PyQt 项目的打包过程。首先,通过 pip 安装这个插件:

    pip install pyinstaller-hooks-contrib
    
  2. pyproject.tomlsetup.cfg 文件中添加钩子配置:在 setup.cfg 文件中,找到或添加一个 [options] 部分,并在 py_modulespackages 中添加 PyQt5_plugins 插件。

    [options]
    py_modules = PyQt5_plugins
    packages = find:
    
  3. 修改打包命令:为了减少可执行文件的大小,我们需要使用 --strip 选项来去除动态链接库(DLL)中的调试信息。同时,可以使用 --onefile--noconsole 来创建单文件或无图形界面的可执行文件。最后,通过指定 Python 解释器路径和目标文件夹,运行打包命令:

    pyinstaller --strip --onefile --noconsole -y main.py
    
  4. 使用资源预编译技术:为了进一步减小可执行文件的大小,我们可以利用 PyInstaller 的 --add-data 选项来将需要包含的静态资源(如图片、音频等)打包进可执行文件中。例如,假设我们有两个静态资源文件 image.pngaudio.mp3,我们需要将它们包含在可执行文件中:

    pyinstaller --strip --onefile --noconsole -y --add-data "resources/image.png;." --add-data "resources/audio.mp3;." main.py
    
  5. 测试打包后的应用程序:在确保所有资源都被正确包含并打包之后,可以重新构建可执行文件后进行测试。确保应用能够正常运行,并且静态资源的访问路径没有问题。

  6. AI 应用场景示例:如果你的应用程序需要与人工智能大模型(如 OpenAI 的 GPT-3)进行交互,那么你可以在 PyQt 项目的后端部分集成 OpenAI SDK。例如,你可以创建一个简单的 PyQt 界面来获取用户输入的文本,然后通过 Python 脚本调用 OpenAI 的 API 来生成回复。以下是一个简单的示例代码:

    import sys
    from openai import OpenAI
    
    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            self.openai = OpenAI('你的-api-密钥')
    
            self.line_edit = QLineEdit(self)
            self.push_button = QPushButton('生成回复', self)
            self.push_button.clicked.connect(self.generate_reply)
    
        def generate_reply(self):
            prompt = self.line_edit.text()
            response = self.openai.ChatCompletion.create(
                model='gpt-3.5-turbo',
                messages=[
                    {'role': 'system', 'content': '你好,我是一个AI助手。'},
                    {'role': 'user', 'content': prompt},
                ],
            )
            print(response['choices'][0]['message']['content'])
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
    

通过以上步骤,你可以将 PyQt 构建的 EXE 文件大小减小,并优化其性能。如果需要进一步优化,可以尝试使用 pyinstaller 提供的其他高级功能,或者考虑使用其他打包工具,如 cx_FreezePyOxidizer

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐