32 位 Linux 上的 PyInstaller - ImportError:需要“六个”包

2023-12-22

我正在使用一个程序Python2.7 and Kivy1.9.2-dev,并尝试将其打包PyInstaller-3.0对于不同的系统作为单个可执行文件。

我尝试将其打包的系统是:

  • 64 位 Linux Mint 17.3
  • 32位Linux Mint 17(升级到17.1和17.3时也尝试过)
  • 32 位 Windows XP SP3
  • 树莓派(树莓派)

在所有这些系统上,程序在未编译的情况下使用 Python 运行时运行良好。 (因此,所有 Kivy 依赖项也都很好)。

然而,在使用 PyInstaller 生成的可执行文件中,只有在 64 位 Linux 上生成的可执行文件可以作为一个文件运行。 Windows 和 Raspbian 可执行文件大部分都可以运行(我稍后会写),但在 32 位 Linux 上制作的可执行文件仍然无法运行。运行时出现以下错误(我尝试在 32 位和 64 位 Linux 上运行它):

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "/media/Data/Programming/Python/installers/PyInstaller-3.0/PyInstaller/loader/pyimod03_importers.py", line 363, in load_module
    exec(bytecode, module.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 48, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/extern/__init__.py", line 60, in load_module
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

这是我感到困惑的地方:

  1. 在我的“/usr/local/lib/python2.7/dist-packages/”内部,没有“pkg_resources”文件夹,但上面的内容表明它显然在那里......它甚至成功读取了那里的文件。它是在可执行文件启动时创建的吗?
  2. 我没有专门使用“六”来表示任何东西,在这个错误之前我什至不知道它的存在。
  3. 正如包管理器和 Pip 所确认的,我的系统上安装了“6”。它位于“/usr/local/lib/python2.7/dist-packages/”中。我猜想 PyInstaller 由于某种原因找不到它(因为我相信,如果所有内容都正确打包,那么它不必位于运行可执行文件的系统上。)

所以,我的问题非常典型,是什么可能导致 PyInstaller 出现此问题(以防万一,我确实为其运行了“setup.py install”),以及如何解决/修复它?

Thanks!

PS:顺便说一句,我提到了 Windows 和 Raspbian 可执行文件的问题。在 Windows 上,该 exe 仅当同一文件夹中存在“zlib1.dll”时运行(即使使用 PyInstaller 专门打包到 exe 中,它也不起作用),而在 Raspbian 上,我只在不使用“的情况下让程序运行” --onefile”(使用“--onefile”,似乎 PyInstaller 不会将任何 Python 二进制文件打包到可执行文件中,例如 libpython.2.7.so,也许还有其他文件)


好吧,按照克莱门特的建议,将“六个”添加到隐藏包中并没有起作用,但开始了一系列的反复试验,最终找到了解决方案。 在使用“hiddenimports”进行测试不起作用后,我尝试将“6”导入到我的Python代码中。并且编译后的可执行文件不再显示此错误!然而,它现在说需要名为“packaging”的包...我没有安装。

简而言之,从最初的问题开始,我是这样做的:

  1. 使用“pip”安装“打包”:

    sudo pip 安装打包

  2. 将这些导入添加到我的主要 Python 代码中:

    进口六

    进口包装

    导入包装.版本

    导入包装.说明符

(添加的所有导入都是反复试验,直到 PyInstaller 制作的可执行文件最终起作用为止)。

看起来有点 hack-y,因为为 64 位 Linux 制作可执行文件不需要任何这些导入,但至少它现在可以工作,并且可执行文件的大小基本上不受影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

32 位 Linux 上的 PyInstaller - ImportError:需要“六个”包 的相关文章

  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 错误:命令“c++”失败,退出状态为 1

    所以我尝试按照以下说明安装 Pyv8https andrewwilkinson wordpress com 2012 01 23 integrating python and javascript with pyv8 https andre
  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 从 Python 脚本创建可执行文件,同时获取较小的输出大小

    我的问题可能已经在某个地方得到了解答 但我仍然找不到直接的答案 我想从 python 代码创建一个独立的可执行文件 我已经尝试过很多解决方案 例如py2exe pyinstaller等等 但我的问题是输出文件大小很大 例如 在pyinsta
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include
  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID

随机推荐

  • jsx 表忽略换行符

    我正在尝试创建一个包含多行字符串的表 但我的表未正确设置该字符串的格式 这是 jsx td arr join n td 这是相应的 html td Line 1 Line 2 Line 3 Line 4 td 但在浏览器中它看起来像 发生了
  • 删除 Swagger UI 上的架构 - 续

    我已经关注了置顶文章 Net Core 3 1 删除 Swagger UI 上的架构 https stackoverflow com questions 62858580 net core 3 1 remove schema on swag
  • 两个进程写入一个文件,防止混合输出

    我想从两个进程获取输出并将它们合并到一个文件中 例如 proc1 gt gt output proc2 gt gt output 问题是最终文件中的输出可能会混淆 例如 如果第一个进程写入 hellow 第二个进程写道 bye 结果可能是这
  • 将 jquery 代码应用于多个文本区域

    我有一些代码可以工作 但有很多重复 http jsfiddle net 6Wp2j 25 http jsfiddle net 6Wp2j 25 input apple on keyup function div apple html thi
  • 如何以编程方式清除 Microsoft Edge 浏览器缓存?

    有谁知道如何以编程方式清除 Microsoft Edge 的缓存 Net 脚本 命令行 删除文件 上面给出的位置我认为是错误的 下面是 cookie 历史记录和缓存的位置 目录 C Users 用户名 AppData Local Micro
  • asp.net mvc 页面不显示关联对象的属性

    我有以下简单的结构 申请人 位置 申请人职位 和申请人职位历史 第三类有一份申请人推荐信和一份职位推荐信 第 4 个表有一个与 ApplicantPosition 相关的参考 在 razon 页面中 我正在显示每个职位申请人的历史记录 例如
  • 从IP地址获取子网掩码和网关

    我该如何计算subnet mask and gateway从一个IP address 假设我的 IP 地址是180 12 24 68 那么如何计算这个IP的子网掩码和网关呢 您无法计算您的子网掩码or仅来自 IP 地址的网关 您可以在给定
  • 在网络服务器上管理多个.Net框架

    因此 我负责在生产服务器上部署我的项目 其中还设置了一些其他 ASP NET 网站 现在的问题是 我在 NET 3 5 下编写了整个项目 但在网络服务器上当前安装是 NET 1 1 因为其他一些项目需要它们 不要问我为什么 我也无法弄清楚
  • 将列表列表拆入 pandas 数据框[重复]

    这个问题在这里已经有答案了 假设我有以下数据框 x pd DataFrame a x y x t x r y t b 1 0 1 a b 0 x y 1 1 x t x r 0 2 y t 1 我想去 letter num 0 x 1 1
  • Python 中的 __del__() 方法有什么用?

    From Python 文档 https docs python org 3 reference datamodel html highlight del object del 不保证 del 为解释器退出时仍然存在的对象调用方法 据我了解
  • 如何连接两个节点集以尊重顺序?

    我的理解是 尽管 XSLT 的 节点集 被称为 集 但它们实际上是节点的有序列表 这就是每个节点与索引关联的原因 因此我一直在尝试使用 运算符连接节点集 以便尊重节点的顺序 我试图完成的任务类似于以下 JavaScript 代码 o1 o2
  • PowerShell - 列出我系统上的所有 SQL 实例?

    是否有 Powershell 命令可以列出我的系统上的所有 SQL 实例 微软 SQL 2008 只是另一种方法 可以比 SQLPS 更快一点来获得快速答案 get itemproperty HKLM SOFTWARE Microsoft
  • luxon 将本地时间转换为给定时区的 utc

    数据源具有没有偏移量的 ISO 8601 日期时间字段 例子 2019 07 09T18 45 然而 我知道所讨论的时间被理解为America Chicago时区 如何获得与 UTC 时间相当的 Luxon DateTime 对象 我可以D
  • 在驼峰式标记上的单词之间插入空格[重复]

    这个问题在这里已经有答案了 有没有一个很好的功能可以将类似的东西变成 名 to this 名 See NET 如何将 caps 分隔字符串拆分为数组 https stackoverflow com questions 155303 net
  • 如何在 SQL Server 中查找未使用的表

    有没有办法找出数据上次输入表的时间 我正在尝试在数据库中查找过时的表 并想知道是否有可以运行的简单脚本 您可以尝试检查查询结果sys dm db index usage stats http msdn microsoft com en us
  • 解压嵌套字典的更简洁的方法

    我正在从 API 批量接收 JSON 格式的数据 我希望仅将值存储在列表中 原始数据看起来像这样并且总是看起来像这样 即 所有 看起来像第一个示例 data content get data gt gt gt a 1 b c 2 d 3 e
  • DropzoneJS dataURL 未定义

    我正在制作一个上传脚本 但我一直在 addedfile 事件中从 file 获取 dataURL 这是我的代码 function var dropzone new Dropzone avatar url uploads avatar cli
  • Visual Studio 显示无尽的消息“属性‘valueMember’的代码生成失败。”

    使用 Visual Studio 2008 愉快地开发这个 C 应用程序几天后 我被一系列显示的错误对话框震惊了 属性的代码生成 价值会员 失败的 错误是 你调用的对象是空的 当我对设计器进行微小更改时 例如 现在经常会发生这种情况 将控件
  • 派生类的抽象基类,其函数具有派生类的返回类型

    我想对从基类派生的所有类强制使用特定的 API 通常 您可以使用具有纯虚函数的抽象基类来执行此操作 但是 如何处理返回派生类型的函数 我该如何强制执行这种类型的功能 struct base virtual base func 0 struc
  • 32 位 Linux 上的 PyInstaller - ImportError:需要“六个”包

    我正在使用一个程序Python2 7 and Kivy1 9 2 dev 并尝试将其打包PyInstaller 3 0对于不同的系统作为单个可执行文件 我尝试将其打包的系统是 64 位 Linux Mint 17 3 32位Linux Mi