2017-05-20 26 views
1

當使用PyInstaller 3.2.1打包在python 3.6.1中編寫的Kivy 1.10.0應用程序在Windows 10第一次後關於應用程序打包的Kivy.org教程。當我在Windows命令行中打包.spec文件時,出現與pzy變量相關的語法錯誤。我查看了Kivy支持部分,PyInstaller支持頁面,並使用輪子而不是Pycharm重新安裝了PyInstaller和Kivy。我收到錯誤消息是從Windows命令行下面是:PyInstaller 3.2.1與Kivy 1.10.0 pyz語法錯誤和dosn't pack

92 INFO: PyInstaller: 3.2.1 
92 INFO: Python: 3.6.1 
93 INFO: Platform: Windows-10-10.0.14393-SP0 
95 INFO: UPX is not available. 
Traceback (most recent call last): 
    File "C:\python36\lib\runpy.py", line 193, in _run_module_as_main 
    "__main__", mod_spec) 
    File "C:\python36\lib\runpy.py", line 85, in _run_code 
    exec(code, run_globals) 
    File "C:\python36\lib\site-packages\PyInstaller\__main__.py", line 97, in <module> 
    run() 
    File "C:\python36\lib\site-packages\PyInstaller\__main__.py", line 90, in run 
    run_build(pyi_config, spec_file, **vars(args)) 
    File "C:\python36\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build 
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) 
    File "C:\python36\lib\site-packages\PyInstaller\building\build_main.py", line 788, in main 
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build')) 
    File "C:\python36\lib\site-packages\PyInstaller\building\build_main.py", line 734, in build 
    exec(text, spec_namespace) 
    File "<string>", line 20 
    pyz = PYZ(a.pure, a.zipped_data, 
    ^
SyntaxError: invalid syntax 

.spec文件我一直在用低於:

# -*- mode: python -*- 
from kivy.tools.packaging.pyinstaller_hooks import get_deps_minimal, get_deps_all, hookspath, runtime_hooks 
from kivy.deps import sdl2, glew 
block_cipher = None 

a = Analysis(['KivyCalculator\\main.py'], 
      pathex=['C:\\Users\\lukeb\\OneDrive\\Documents\\Python\\'], 
      binaries=[], 
      datas=[], 
      hiddenimports=[], 
      hookspath=hookspath(), 
      runtime_hooks=runtime_hooks(), 
      excludes=[], 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher 
      **get_deps_all() 

pyz = PYZ(a.pure, a.zipped_data, 
    cipher=block_cipher) 
exe = EXE(pyz, 
      a.scripts, 
      exclude_binaries=True, 
      name='KivyCalculator', 
      debug=False, 
      strip=False, 
      upx=True, 
      console=True , icon='KivyCalculator\\icon.ico') 
coll = COLLECT(exe,Tree('C:\\Users\\lukeb\\OneDrive\\Documents\\Python\\KivyCalculator'), 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)], 
       strip=False, 
       upx=True, 
       name='KivyCalculator') 

我將是任何幫助的人可以提供非常感激。

回答

1

這是因爲你在.spec文件進行了錯字和文件僅僅是Python的,所以你基本上是這樣結束了:

a = Analysis(..., 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher # no comma 
      **get_deps_all()  # no closing bracket 

pyz = PYZ(a.pure, a.zipped_data, # bam, syntax error 
    cipher=block_cipher)