2017-05-09 7 views
0

python 3 및 Kivy를 사용하여 작은 응용 프로그램을 작성했습니다. 이 응용 프로그램은 python뿐만 아니라 kv 파일을 기반으로합니다. 나는 Windows 용 패키지를 만들고 싶었다. 공식 문서에있는 정보를 바탕으로 패키지를 만들 수 있었지만 정말 컸습니다! 그런 다음 사용하지 않는 라이브러리를 제외하고 패키지의 크기를 줄이려고했습니다. 이렇게하기 위해 공식 문서를 다시 읽었습니다.Kivy, Python : PyInstaller에서 생성 한 패키지의 크기를 줄일 수 없습니다.

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

그리고 I : I 오류 메시지가 다음받을

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는 기본적으로 그것들을 제외시키지 않는다. 당신은에 설치하고 내장 된 모든 파이썬 모듈의 목록을 얻으려면 다음 코드를 실행할 수 있습니다

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

이 당신에게 설치된 모든 모듈의 목록을 가져옵니다. 다음 명령을 실행하여 SPEC 파일을 만듭니다.

pyi-makespec main.py 

다음으로 사양 파일을 엽니 다. excludes 섹션에서 위 코드에서 작성한 목록을 붙여 넣으십시오. 필요한 것만 제거하십시오 (몇 개의 내장 명령을 제거해야합니다). 이것이 도움이되는지 확인하십시오.

+0

미안하지만 ... 초보자입니다. 어디에서 코드 "import pkgutil ..."을 작성해야합니까? – dade100

+0

나는 당신이 옳은 길을 가고있는 것처럼 낭비를 줄일 수있는 다양한 방법이 있음을 의미합니다. 사용중인 경우 어떤 유형의 미디어가 전체 파일 크기입니까? 특정 파일을 다른 유형으로 변환하면 품질이 떨어지는 것을 최소화하면서 전체 크기를 줄일 수 있습니다. 또한 프로그램의 모든 종속성을 가진 정적 응용 프로그램을 기본적으로 빌드한다는 것을 이해하는 것도 중요합니다. 필자는 파이썬을 번들로 묶어 놓은 테스트 머신에서 나 자신을 위해 일을 해왔다. 나는 kivy와 함께 테스트를 위해 필요한 다른 모든 것들을 가지고있다. 더 많은 정보를 주시겠습니까? – Afflicted

+0

IDLE을 열어서 입력 할 수 있습니다. IDLE은 Python 용 대화 형 쉘입니다. 기꺼이 도와 드리겠습니다. –