我正在尝试为Windows打包我的Kivy应用程序,但出现了一些问题。
按照kivy docs中的指示,我创建并编辑了spec文件。我既不使用pygame也不使用SDL2(我是说我不直接导入它们来运行我的程序),但是在Kivy日志中,我看到pygame仍然提供了我的窗口:
[INFO ] [Text ] Provider: pygame
[INFO ] [Window ] Provider: pygame
我不明白为什么,因为我使用的是Kivy 1.9.0。
话虽如此,我在建立规范时遇到了这个问题:
(...)
202 WARNING: stderr: File "C:\Program Files\Python Kivy-1.9.0-py3.4-win32-x86\kivy34\kivy\tools\packaging\pyinstaller_hooks\__init__.py", line 13, in install_hooks
sym['rthooks']['kivy'] = [join(curdir, 'rt-hook-kivy.py')]
202 WARNING: stderr: sym['rthooks']['kivy'] = [join(curdir, 'rt-hook-kivy.py')]
KeyError: 'rthooks'
202 WARNING: stderr: KeyError: 'rthooks'
我对编辑规范有些困惑(我需要导入pygame/SDL2吗?),这可能是我的问题。我正在使用Windows 7 x86,Python 3.4.3和Kivy 1.9.0。
任何帮助表示赞赏。
最佳答案
,2015年10月1日更新:
It turns out this is a bug.截至2015年9月24日,最新版本的Kivy应该没有此问题。
但是,从源代码在Windows上安装Kivy而不使用Christoph Gohlke's pre-compiled wheels是另一个很难克服的难题,因此在实践中,如果您真正渴望Python 3.x兼容性,那么最可能要等到Kivy团队发布1.9以上的另一个版本。 0,以及Gohlke的脚本来生成易于安装的二进制文件。
我对此进行了部分故障排除:
您引用的kivy docs提到将以下三行添加到.spec
文件的顶部:
from kivy.tools.packaging.pyinstaller_hooks import install_hooks
import os
install_hooks(globals())
该错误发生在
install_hooks(globals())
中,它在\Lib\site-packages\kivy\tools\packaging\pyinstaller_hooks\__init__.py
中定义:from os.path import dirname, join
from functools import partial
curdir = dirname(__file__)
def install_hooks(sym, hookspath=None):
_hookspath = [curdir]
if hookspath is not None:
_hookspath += hookspath
sym['rthooks']['kivy'] = [join(curdir, 'rt-hook-kivy.py')]
sym['Analysis'] = partial(sym['Analysis'], hookspath=_hookspath)
但是倒数第二行导致出现此消息:
WARNING: stderr: KeyError: 'rthooks'
。因此,看起来好像期望将
rthooks
变量放在全局命名空间中,但事实并非如此。我不确定下一步该怎么做。
关于python - Kivy 1.9.0 Windows程序包KeyError : 'rthooks' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31083061/