Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kivy,Python:我无法减小PyInstaller生成的包的大小_Python_Kivy_Pyinstaller - Fatal编程技术网

Kivy,Python:我无法减小PyInstaller生成的包的大小

Kivy,Python:我无法减小PyInstaller生成的包的大小,python,kivy,pyinstaller,Python,Kivy,Pyinstaller,我用Python3和Kivy编写了一个小应用程序。该应用程序基于python和kv文件。我想为Windows创建一个包。根据官方文档中的信息,我可以创建一个包,但它真的很大!然后我尝试减小包的大小,排除未使用的库。为此,我再次遵循了官方文档 这是我创建和修改的等级库文件: from kivy.deps import sdl2, glew from kivy.tools.packaging.pyinstaller_hooks import get_deps_minimal, hookspa

我用Python3和Kivy编写了一个小应用程序。该应用程序基于python和kv文件。我想为Windows创建一个包。根据官方文档中的信息,我可以创建一个包,但它真的很大!然后我尝试减小包的大小,排除未使用的库。为此,我再次遵循了官方文档

这是我创建和修改的等级库文件:

from kivy.deps import sdl2, glew
from kivy.tools.packaging.pyinstaller_hooks import get_deps_minimal,     hookspath
# -*- mode: python -*-

block_cipher = None


a = Analysis(['main.py'],
             pathex=['C:\\Users\\..\\wecker'],             
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=hookspath(),
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             **get_deps_minimal(video=None, audio=None))
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='myweckapp',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe, Tree('buildtemp'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False,
               upx=True,
               name='myweckapp')
当我运行命令时:

python -m PyInstaller --name touchtracer examples-path\demo\touchtracer\main.py
我收到以下错误消息:

WARNING: stderr: TypeError: type object got multiplevalues for keyword argument 'excludes'
我不能继续了。我试图消除代码行:

excludes=[],
然后我得到了以下信息:

WARNING: stderr: TypeError: type object got multiplevalues for keyword argument 'hiddenimports'
因此,我也尝试将这一行元素化:

hiddenimports=[]
现在,我可以创建一个包,但仍然是巨大的


知道我错在哪里吗?

有多大?我以前在使用PyInstaller时遇到过类似的大小问题。我有一些巨大的模块,比如IPython、cv2等,PyInstaller默认情况下并不排除它们。您可以运行以下代码以获取所有已安装和内置python模块的列表:

import pkgutil
for i in pkgutil.iter_modules():
    print('"'+i[1]+'",')
这将获得所有已安装模块的列表。接下来,运行以下命令生成等级库文件:

pyi-makespec main.py

接下来,打开等级库文件。在“排除”部分中,粘贴根据上述代码创建的列表。只删除您需要的(您将需要删除一些内置的)。看看这是否有帮助。

很抱歉问这个问题。。。但我是个新手。我必须在哪里编写你的代码“导入pkgutil…”?我的意思是有多种方法可以减少浪费,看起来你走对了方向。完整文件大小是多少?您使用的介质类型是什么。将特定文件转换为不同类型可以减少总体大小,同时质量损失最小(如果有的话)。同样重要的是要理解,您实际上是在构建一个静态应用程序,它具有程序的所有依赖项。我在测试机器上为自己做过一些事情,我把Python、it’s self、kivy和测试所需的所有其他东西捆绑在一起。你能给我们一些更多的信息吗?你可以打开IDLE并输入。IDLE是python的交互式shell。没问题,很乐意帮助。亲爱的本杰明,获取我需要的模块和内置模块列表的最佳方式是什么。我正在打包一个Kivy+Python应用程序,大小约为300MB!!!!:(