【问题标题】:Kivy Garden in PyInstaller - stuck trying to trace import [duplicate]PyInstaller中的Kivy Garden - 试图跟踪导入[重复]
【发布时间】:2014-07-25 17:56:33
【问题描述】:

我正在尝试构建一个基于 Kivy 的 Python 项目。它通过导入使用来自 Kivy Garden 的 NavigationDrawer 组件:

从 kivy.garden.navigationdrawer 导入 NavigationDrawer

我有一个用于构建可分发版本的 PyInstaller 规范文件。这个版本在我的机器上运行良好,但不幸的是在其他机器上不行。使用 -v 开关在“dist”版本中运行解释器,似乎当我在我的机器上运行可分发文件时,navigationdrawer 组件实际上并不是来自我的构建文件夹。所有其他导入显示如下:

import kivy.graphics.gl_instructions # 从 C:\Users\me\myapp\dist\RACECA~1\kivy.graphics.gl_instructions.pyd 动态加载

但是 navigationdrawer 导入说:

导入 kivy.garden.navigationdrawer

"""目录 C:\Users\me\.kivy\garden\garden.navigationdrawer C:\Users\me\.kivy\garden\garden.navigationdrawer\__init__.pyc 匹配 C:\Users\me\.kivy\garden\garden.navigationdrawer\__init__.py import kivy.garden.navigationdrawer # 预编译自 C:\Users\me\.kivy\garden\garden.navigationdrawer\__init__.pyc"""

但是不!我不希望您从 c:\users 导入它们。我希望它们像所有其他导入一样被很好地复制到我的 dist 文件夹中。我尝试将 c:\users\me 添加到 PyInstaller 的 pathex、系统 PATH 和 PYTHONPATH 中,但没有任何乐趣。有人有什么想法吗?

【问题讨论】:

标签: python kivy pyinstaller


【解决方案1】:

您可以将 navigationdrawer 代码从 C:\Users\me\.kivy\garden\garden.navigationdrawer 复制到您的应用目录,调用文件夹“navigationdrawer”并将导入替换为 from navigationdrawer import NavigationDrawer

这不是完全“正确”的方法(可能有一些方法可以让 pyinstaller 复制它),但它应该可以正常工作。

【讨论】:

    【解决方案2】:

    尝试将您的花园包安装到您的应用中。即

    garden install --app navigationdrawer
    

    这将在当前目录中创建一个 libs/garden 文件夹,并将花园包放在其中,这应该更容易包含。

    【讨论】:

    • 这实际上不起作用 - 它似乎仍然从错误的位置加载。我猜 PyInstaller 没有将它作为依赖项选择,也没有将 lib 复制过来。我认为关键是某种 PyInstaller 指令,我只是不知道它可能是什么。
    • 应用安装后,尝试在您的 pyinstaller 规范中将 navigationdrawer 添加为 hidden import
    【解决方案3】:

    花园模块也有类似的问题。当我安装如下:

    start cmd /C "garden install --kivy roulettescroll" 开始 cmd /C "花园安装 --kivy 轮盘" 开始 cmd /C "garden install --kivy tickline" start cmd /C "garden install --kivy datetimepicker"

    我添加 PyInstaller ... --hidden-import=kivy.garden.tickline --hidden-import=kivy.garden.roulette --hidden-import=kivy.garden.roulettescroll --hidden-import=kivy。 garden.datetimepicker ...

    我能够安装并且 Python 拾取模块没有问题。不幸的是,日期时间选择器显示为白色矩形。我不知道我可能会错过什么。但至少我解决了导入问题。

    【讨论】:

      【解决方案4】:

      转到你的python站点包有一个名为garden的文件夹,查看__init__.py。有一个说明如何安装navigationdrawer。

      【讨论】:

      • 请在此处分享更多详细信息。希望获得有关完整文档的萨米技术指南的详细步骤
      猜你喜欢
      • 2017-05-04
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多