【问题标题】:py2app cannot exclude module properlypy2app 无法正确排除模块
【发布时间】:2017-03-19 16:41:05
【问题描述】:

我正在尝试使用 py2app 与 PyQt5 构建一个应用程序包并排除不必要的模块,但是,我仍然在我的应用程序中获得了超过 200MB 的整个 PyQt5 包

from setuptools import setup

APP = ['browser.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True, 'includes': ['PyQt5.QtCore', 'PyQt5.QtGui', 'PyQt5.QtWidgets'],
        'excludes': ['PyQt5.QtDesigner', 'PyQt5.QtNetwork', 'PyQt5.QtOpenGL', 'PyQt5.QtScript', 'PyQt5.QtSql', 'PyQt5.QtTest','PyQt5.QtXml', 'PyQt5.QtHelp','QtHelp','QtSerialPort','QtHelp.so','PyQt5.QtHelp.so']}

setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],

)

这里是 browser.py

from PyQt5.QtCore import QUrl 
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
from PyQt5.QtWebEngineWidgets import QWebEngineView

import sys

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('My Browser')

        self.setWindowIcon(QIcon('icons/penguin.png'))
        self.show()


        self.browser = QWebEngineView()
        url = 'https://www.google.com/'

        self.browser.setUrl(QUrl(url))

        self.setCentralWidget(self.browser)


app = QApplication(sys.argv)

window = MainWindow()

window.show()

app.exec_()

谢谢!

【问题讨论】:

    标签: python python-3.x setuptools pyqt5 py2app


    【解决方案1】:

    更新:

    我目前的方法是剪掉 PyQt5 并只留下必要的包。用剪切的替换 PyQt。

    【讨论】:

      【解决方案2】:

      我的 PyQt5 项目也遇到了同样的问题。

      我使用的解决方案是在 py2app 构建应用程序后删除文件。 就我而言,这可以节省大约 100MiB。

      你可以在这里看到我使用的代码:

      https://github.com/barry-scott/scm-workbench/blob/master/Kit/macOS/build-app.sh

      基本思想是只包含列出的 PyQt5 模块。 我手动设置了使用的模块列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-16
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多