python - Kivy 1.9.0 Windows 包KeyError : 'rthooks'

标签 python kivy pyinstaller

我正在尝试为 Windows 打包我的 Kivy 应用程序,但我遇到了一些问题。 按照 kivy docs 中的说明进行操作,我创建并编辑了规范文件。我既不使用 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/

相关文章:

python - Kivy:如何检索在 python 中创建的复选框(或其他小部件)的 ID 或事件状态

python - 使用 pyinstaller 构建 python pylab/matplotlib exe

java - JPype1=0.7.0 : TypeError: Unable to convert str ro java type class java. lang.String

python - 如何获取请求 'get' 来遵循所有重定向

Python/PySpark 解析带有编号属性的 JSON 字符串

python - 使用键按月对时间戳进行排序

python - Kivy 不检测 OpenGL 2.0

python - 最小集覆盖

python - 如何使用python类在kivy中使用下拉小部件

python - Msys2 上的 Pyinstaller 与 pygobject