我正在尝试使用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_()
谢谢!
答案 0 :(得分:0)
更新
我目前的方法是剪切PyQt5并仅留下必要的包。用切割的替换PyQt。
答案 1 :(得分:0)
我的PyQt5项目遇到了同样的问题。
我使用的解决方案是在py2app构建应用程序后删除文件。 在我的情况下,节省约100MiB。
您可以在此处查看我使用的代码:
https://github.com/barry-scott/scm-workbench/blob/master/Kit/macOS/build-app.sh
基本思想是仅包含列出的PyQt5模块。 我手动设置使用的模块列表。