在使用PyInstaller成功打包PySide应用之后,我在package文件夹中发现了许多不同的* .so文件。我惊讶地发现我没有在项目中使用库,例如: for i in range(0,len(m)):
k.append(f[:])
,libQt53DAnimation.so
,libQt53DCore.so
等。
我没有在源代码中导入它们,也没有将它们包含在隐藏的导入中。
如我所读,PyInstaller会自动查找应用程序运行所需的所有依赖项。如果我在打包后手动将其删除,则我的应用程序运行时没有任何更改/问题。指出没有必要,它们不应该被视为依赖项,不是吗?
那么包装时有什么方法可以排除它们
答案 0 :(得分:0)
如果您确定应用程序不需要它们,则可以使用spec文件中的Analysis排除它们。您只需要添加它们即可,如此处https://pythonhosted.org/PyInstaller/spec-files.html#spec-file-operation所示。
这是您可以做的:
a.binaries = a.binaries - TOC([
('libQt53DAnimation.so', None, None),
('libQt53DCore.so', None, None),
('libQt5Multimedia.so', None, None),
])
还有一个--exclude-module EXCLUDES
用于排除模块,但不确定与您的情况有多相关。
不幸的是,正如Hartmut Goebel解释的here
,pyinstaller包含某些可选的依赖项。PyInstaller最好只包含所需的模块-即 PyInstaller是关于:-)的。但是很多包都有可选的 您的程序可能不需要依赖项,但是 对于其他程序。 PyInstaller不知道这一点,是否PyInstaller 将删除太多,其他程序可能会失败。请使用选项 -为此除外。
请记住,仅Python的功能就是“完整unicode” 支持”中添加了许多编解码器模块,这些模块看起来没有必要,但它们 是Python正常运行所必需的。