2017-05-09 10 views
0

python 3とKivyを使用して小さなアプリケーションを作成しました。このアプリは、pythonとkvファイルに基づいています。私はWindows用のパッケージを作成したかったのです。公式文書にある情報に基づいて、私はパッケージを作ることができましたが、それは本当に巨大でした!それから私は、使用されていないライブラリを除いて、パッケージのサイズを縮小しようとしました。これを行うために、私は再び公式文書に従った。Kivy、Python:PyInstallerによって生成されたパッケージのサイズを小さくすることはできません

WARNING: stderr: TypeError: type object got multiplevalues for keyword argument 'excludes' 

と私:私は、エラーメッセージ、次の取得

python -m PyInstaller --name touchtracer examples-path\demo\touchtracer\main.py 

:私は、コマンドを実行すると

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') 

この

は私が作成した仕様ファイルと変更されています続けることはできません。私は作成することができ、今

hiddenimports=[] 

:私もこのラインをeleiminateしようとした、このよう

WARNING: stderr: TypeError: type object got multiplevalues for keyword argument 'hiddenimports' 

を:

その後
excludes=[], 

私はメッセージ次しまった:私は、コードの行を排除しようとしましたパッケージはまだ巨大です!

私が間違っていると思っていますか?

答えて

0

どのくらいですか?以前はPyInstallerを使って同様のサイズの問題がありました。私はIPython、cv2などのようないくつかの巨大なモジュールを持っており、PyInstallerはそれらをデフォルトで除外しません。あなたは内に設置し、構築されたすべてのpythonモジュールのリストを取得するには、次のコードを実行することができます。

import pkgutil 
for i in pkgutil.iter_modules(): 
    print('"'+i[1]+'",') 

これはあなたにインストールされているすべてのモジュールのリストを取得します。次に、次のコマンドを実行してSPECファイルを作成します。

pyi-makespec main.py 

次に、スペックファイルを開きます。除外セクションで、上記のコードから作成したリストを貼り付けます。必要なものだけを削除します(組み込みのものを削除する必要があります)。これが役立つかどうかを見てください。

+0

申し訳ありませんが...私は初心者です。あなたのコード "import pkgutil ..."をどこに書く必要がありますか? – dade100

+0

私はあなたが正しい軌道にいるように見えるように廃棄物を減らすことができる様々な方法があることを意味します。あなたが使っているメディアの種類はどれくらいですか?特定のファイルをさまざまなタイプに変換すると、品質の損失を最小限に抑えて全体のサイズを小さくすることができます。また、プログラムのすべての依存関係を持つ静的なアプリケーションを基本的に構築していることを理解することも重要です。私は、テストマシンで自分自身のためにやったことがあります。私はPythonをバンドルしています。それはkivyと一緒に自分自身であり、私のテストに必要なものです。あなたは私たちにいくつかの情報をもっとくれますか? – Afflicted

+0

IDLEを開いて入力するだけです。IDLEはPythonの対話型シェルです。問題ありません、喜んで助けてください。 –

関連する問題