2016-06-28 136 views
0

我想我打包带Pyinstaller kivy项目,但它崩溃,并吐出了这一点Kivy应用程序崩溃后

[CRITICAL   ] [Window  ] Unable to find any valuable Window  provider at all! 
sdl2 - Exception: SDL2: Unable to load image 
File "site-packages\kivy\core\__init__.py", line 67, in core_select_lib 
File "site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__ 
File "site-packages\kivy\core\window\__init__.py", line 722, in __init__ 
File "site-packages\kivy\core\window\window_sdl2.py", line 255, in 
create_window 

File "site-packages\kivy\core\window\__init__.py", line 897, in create_window 
File "kivy\graphics\instructions.pyx", line 756, in  
kivy.graphics.instructions.RenderContext.__init__ (kivy\graphics\instructions.c:10729) 
File "site-packages\kivy\core\image\__init__.py", line 512, in __init__ 
File "site-packages\kivy\core\image\__init__.py", line 700, in _set_filename 
File "site-packages\kivy\core\image\__init__.py", line 430, in load 
File "site-packages\kivy\core\image\__init__.py", line 198, in __init__ 
File "site-packages\kivy\core\image\img_sdl2.py", line 42, in load 

[INFO    ] [Audio  ] Providers: audio_sdl2 (audio_ffpyplayer ignored) 
[CRITICAL   ] [App   ] Unable to get a Window, abort. 
Exception ignored in: 'kivy.properties.dpi2px' 
Traceback (most recent call last): 
File "site-packages\kivy\utils.py", line 513, in __get__ 
File "site-packages\kivy\metrics.py", line 175, in dpi 
File "site-packages\kivy\base.py", line 126, in ensure_window 
SystemExit: 1 
[CRITICAL   ] [App   ] Unable to get a Window, abort. 
Exception ignored in: 'kivy.properties.dpi2px' 
Traceback (most recent call last): 
File "site-packages\kivy\utils.py", line 513, in __get__ 
File "site-packages\kivy\metrics.py", line 175, in dpi 
File "site-packages\kivy\base.py", line 126, in ensure_window 
SystemExit: 1 
[CRITICAL   ] [App   ] Unable to get a Window, abort. 

我没有创造我选择我自己的规格文件通过传递所需参数的任何建议通过命令行来做到这一点?

这是pyinstaller

# -*- mode: python -*- 

block_cipher = None 


a = Analysis(['apv.py'], 
     pathex=['C:\\Python34\\Lib\\site-packages\\kivy', 'C:\\Python34', 'C:\\Python34\\Lib', 'C:\\Python34\\Lib\\site-packages', 'C:\\Users\\suroh\\Desktop\\my-python-modules', 'C:\\Python34\\Lib\\site-packages\\kivy\\deps', 'C:\\Python34\\Lib\\site-packages\\kivy\\graphic', 'C:\\Python34\\DLLs', 'C:\\Python34\\libs', 'C:\\Python34\\Scripts', 'C:\\Python34\\share\\sdl2\\bin', 'C:\\Python34\\share\\glew\\bin', 'C:\\Python34\\share', 'C:\\Python34\\Tools', 'C:\\Python34\\Lib\\ctypes', 'C:\\Python34\\Lib\\distutils', 'C:\\Users\\suroh\\Desktop\\Python Projects\\testp\\Beta 01'], 
     binaries=None, 
     datas=None, 
     hiddenimports=[], 
     hookspath=[], 
     runtime_hooks=[], 
     excludes=['pygame'], 
     win_no_prefer_redirects=False, 
     win_private_assemblies=False, 
     cipher=block_cipher) 
pyz = PYZ(a.pure, a.zipped_data, 
     cipher=block_cipher) 
exe = EXE(pyz, 
     a.scripts, 
     exclude_binaries=True, 
     name='apv', 
     debug=False, 
     strip=False, 
     upx=True, 
     console=False , icon='LauncherIcon.ico') 
coll = COLLECT(exe, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      strip=False, 
      upx=True, 
      name='apv') 
+0

请添加spec文件。我想你可能没有在规范中添加代码,因为“无法加载图片”需要sdl2文件夹中的某个文件(至少在遇到错误时)。 – KeyWeeUsr

+0

正如我所说我没有使用我自己的spec文件,pyinstaller确实生成了它自己的,所以我会把它,我猜。 – Afflicted

回答

0

产生如果没有建立规范的文件,你仍然需要包,它是在Collect()here依赖的规范文件。

正如中提到pyinstaller的docs

,您可以给pyinstaller命令行上的其他文件。

,这意味着你可以做--add-data或者你可以转储某处的规范,--specpath手动编辑。 HereCollect()基本上包装的东西。是的,你肯定错过了代价。看看基维的规格。

如果你想去--add-data,你应该检查kivy.deps文件夹和__init__() s在他们,因为那些会告诉你你正在寻找什么路径。但手动编辑规格不耗费时间。

+0

感谢队友,这是我在这发现的最清晰的答案,我不能相信我错过了它,但仍然感谢你,因为这是一个巨大的痛苦! – Afflicted