簡體   English   中英

Kivy,Python:我無法減小PyInstaller生成的軟件包的大小

[英]Kivy, Python: I cannot reduce the size of the package generated by PyInstaller

我使用python 3和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]+'",')

這將為您提供所有已安裝模塊的列表。 接下來,運行以下命令以制作SPEC文件:

pyi-makespec main.py

接下來,打開規格文件。 在排除部分中,粘貼從上面的代碼創建的列表。 只刪除您需要的那些(您將需要刪除幾個內置函數)。 看看是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM