Kivy - 在 Windows 上创建包

Posted

技术标签:

【中文标题】Kivy - 在 Windows 上创建包【英文标题】:Kivy - Create package on Windows 【发布时间】:2016-04-26 23:37:44 【问题描述】:

大家好,感谢您抽出宝贵时间帮助我。

我目前正在尝试使用 PyInstaller (3.1) 为我的 Kivy (1.9.1) 应用程序创建一个 Windows 包。我按照文档中的说明进行操作,但无法正常工作。因此,我尝试使用作为示例给出的演示应用程序“touchtracer”,结果相同。我收到以下错误:

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "f:\temp\pip-build-1elcla\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 48, in <module>
    from pkg_resources.extern import six
  File "C:\Python27\lib\site-packages\pkg_resources\extern\__init__.py", line 60, in load_module
    "distribution.".format(**locals())
ImportError: The 'six' package is required; normally this is bundled
with this package so if you get this warning, consult the packager of
your distribution.

pyi_rth_pkgres returned -1

这是我的 .spec 文件:

# -*- mode: python -*-
from kivy.deps import sdl2, glew

block_cipher = None


a = Analysis(['C:\\Python27\\share\\kivy-examples\\demo\\touchtracer\\main.py'],
             pathex=['C:\\Users\\PC\\Documents\\Njord\\njord\\Nouveau dossier'],
             binaries=None,
             datas=None,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             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='touchtracer',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe, Tree('C:\\Python27\\share\\kivy-examples\\demo\\touchtracer\\'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False,
               upx=True,
               name='touchtracer')

我尝试使用从 pip 安装的 Kivy 软件包和使用***的方法,但没有成功。有人解释一下吗?

再次感谢。

【问题讨论】:

【参考方案1】:

我设法找到了解决问题的方法。我试图将“六”包添加到 hidden_​​imports 中,但后来缺少的是“打包”包。

然后我通过简单的安装安装了 setuptools 19.4,这一次,即使“六个”在我的 hidden_​​imports 中,我还是得到了我的第一个错误,以及很多警告。 我环顾四周,有几个人说 setuptools 19.4 有问题,应该恢复到 19.2。我做到了,然后丢失了 kivy.app,但这是进步。

我在 spec 文件的 hidden_​​imports 中添加了 kivy,这导致了另一个错误,说我的一个模块存在属性错误。我只需要添加其他依赖项(sqlalchemy、sqlalchemy.orm、uuid)。

快速回顾:如果您安装了 setuptools,请确保它是 19.2。将外部依赖项添加到 hidden_​​imports,包括 kivy。

【讨论】:

【参考方案2】:

我不得不添加这一行来解决这个问题。

         hiddenimports=['six','packaging','packaging.version','packaging.specifiers'],

【讨论】:

我遇到了和 OP 一样的问题。但是,由于某种原因,我的系统上没有安装“打包”包,所以我收到了关于“打包”不可用的新错误。我可以通过删除 pathex 目录的内容并运行 pip install 打包,然后编辑 .spec 文件来解决此问题。

以上是关于Kivy - 在 Windows 上创建包的主要内容,如果未能解决你的问题,请参考以下文章

kivy 有没有windows64位安装包

Kivy 1.9.0 Windows 包 KeyError: 'rthooks'

Kivy,Python:我无法减小 PyInstaller 生成的包的大小

Kivy 1.9.1 Windows 包 .spec 单个 exe

Kivy 应用程序需要 30 秒才能打开

从 kivy/python 程序创建适用于 Android 的 APK [重复]