【问题标题】:Kivy: PyInstaller not including Kivy modules upon compiling spec fileKivy:PyInstaller 在编译规范文件时不包括 Kivy 模块
【发布时间】:2014-06-19 03:01:27
【问题描述】:

我一直在关注 Kivy.org 的 Creating Packages for Mac OS,以便尝试为我的 Kivy .py 文件创建一个 .app。

但是,尽管按照指南进行操作,但我的应用程序始终无法运行,打开后立即崩溃。 Pyinstaller 的关于构建的警告被转储在包含以下内容的 .txt 中:

W: no module named kivy.graphics.ClearBuffers (top-level import by kivy.uix.screenmanager) W: no module named kivy.core.spelling.SpellingBase (top-level import by kivy.core.spelling.spelling_enchant) W: no module named kivy.core.image.ImageLoader (top-level import by kivy.core.image.img_gif) W: no module named multiprocessing.RLock (top-level import by multiprocessing.sharedctypes)

等等。 . . (完整文件很长,可以查看here

似乎根本找不到任何 kivy 模块,所以它们一定是由于某种原因没有被包含在内。这就是我想问的如何解决。

到目前为止,我一直在使用以下命令:

kivy pyinstaller.py myapp.py
kivy pyinstaller.py myapp.spec

分别创建规范文件和应用程序。 规范文件似乎没有任何遗漏。 (我已经包含了钩子并检查了我过去用来创建 .exe 的工作规范文件)

# -*- mode: python -*-
# -*- coding: utf-8 -*-

from kivy.tools.packaging.pyinstaller_hooks import install_hooks
install_hooks(globals())

a = Analysis(['Meep/Meep.py'],
             pathex=['/Users/Owatch/Documents/pyinstaller/Meep'],
             hiddenimports=[],
             runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='Meep',
          debug=False,
          strip=None,
          upx=True,
          console=False , icon='Meep/icon.icns')
coll = COLLECT(exe,Tree('/Users/Owatch/Desktop/examples/demo/touchtracer/'),
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=True,
               name='Meep')

无论如何,我不确定为什么会发生这种情况。我的怀疑主要围绕以下几点:

1:我将 pyinstaller 下载为 .zip,因为在我的系统上找不到 .py 文件。尽管通过 pip 在我认为是单独的 python 安装上安装了它(我有 2.7 单独)

2:我对 touchtracer 的引用有些错误,它链接到了绑定在 Kivy 的 dmg 中的 touchtracer 目录。 (一个名为 Examples 的文件夹,我把它拖到了我的桌面)

除此之外,恐怕我一无所知。感谢您的帮助(如果可以的话!)

【问题讨论】:

    标签: module kivy pyinstaller


    【解决方案1】:

    该错误似乎与有缺陷的规范文件有关。没有其他可报告的内容。

    【讨论】:

    • 你能详细说明你的规范有什么问题吗?我生成的规范文件也有问题(它是自动生成的,对吗?)。这意味着,我什至无法打包 touchtracher 演示
    • 我记不清了,因为已经有一段时间了。但我相信这与我创建规范文件的过程有关。我正在编辑规范文件,而不是重新创建它以进行更改,并且由于某些程序原因它没有解决。如果您不从头开始该过程,则可能会出现问题。很抱歉,我不能更具体。
    • 好的,我设法从 touchtracer 演示中创建了 OSX *.app 文件,并通过终端运行应用程序。但是,我不能双击它来运行它。我仍然必须使用终端。我最近一直在与这个问题作斗争。您生成的 *.app 文件是否可以通过在 Finder 中双击其图标来运行?
    • 是的,它们可以通过 Finder 运行。但仅在我构建它的 Mac 上。它们不会或不会在其他使用 OSX 的 Mac 上运行。这是一个我还没有解决的问题。
    • 好的,太好了。我可以运行它。必须从 /Applications/Kivy.app 手动复制 kivy/ 文件夹。我会在其他 Mac 上试试这个。谢谢!
    猜你喜欢
    • 2018-12-22
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多