py2app无法正确排除模块

时间:2017-03-19 16:41:06

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

我正在尝试使用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_()

谢谢!

2 个答案:

答案 0 :(得分:0)

更新

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

答案 1 :(得分:0)

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

我使用的解决方案是在py2app构建应用程序后删除文件。 在我的情况下,节省约100MiB。

您可以在此处查看我使用的代码:

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

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