32位Linux上的PyInstaller – ImportError:需要’six’包

32位Linux上的PyInstaller – ImportError:需要’six’包,第1张

概述我正在使用 Python2.7和Kivy1.9.2-dev创建一个程序,并尝试将它与PyInstaller-3.0打包为不同的系统作为单个可执行文件. 我试图打包它的系统是这些: > 64位Linux Mint 17.3 > 32位Linux Mint 17(在升级到17.1和17.3时也尝试过) > 32位Windows XP SP3 > Raspbian(Raspberry Pi) 在所有这些 我正在使用 Python2.7和Kivy1.9.2-dev创建一个程序,并尝试将它与PyInstaller-3.0打包为不同的系统作为单个可执行文件.

我试图打包它的系统是这些:

> 64位linux Mint 17.3
> 32位linux Mint 17(在升级到17.1和17.3时也尝试过)
> 32位windows XP SP3
> Raspbian(RaspBerry Pi)

在所有这些系统上,当只运行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_moduleimportError: 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

这是我很困惑的事情:

>在我的“/usr/local/lib/python2.7/dist-packages/”里面没有“pkg_resources”文件夹,但是上面表明它显然在那里……它甚至可以成功读取文件.它是在可执行文件启动时创建的吗?
>我没有特别使用“六”作为任何东西,在此错误之前我甚至都不知道它存在.
>我的系统上安装了“Six”IS,由Package Manager和Pip确认.它位于“/usr/local/lib/python2.7/dist-packages/”.我猜PyInstaller由于某种原因无法找到它(因为,我相信,如果所有内容都正确打包,它就不必在运行可执行文件的系统上.)

所以,我的问题非常典型,可能会导致PyInstaller的这个问题(以防万一,我为它运行“setup.py安装”),以及如何解决/修复它?

谢谢!

PS:旁注,我提到了windows和Raspbian可执行文件的问题.在windows上,exe仅在同一文件夹中存在“zlib1.dll”时运行(即使使用PyInstaller专门打包到exe中,它也不起作用),并且在Raspbian上我只使用该程序而不使用“ –onefile“(带有”–onefile“,似乎PyInstaller没有将任何Python二进制文件打包到可执行文件中,比如libpython.2.7.so,也可能是其他的)

解决方法 好吧,正如Clement建议的那样,将“六”添加到隐藏包中并不起作用,但是开始了一系列的反复试验,最终导致了一个解决方案.
在使用“hIDdenimports”进行测试后,我尝试将’six’导入到我的Python代码中.编译后的可执行文件不再显示此错误!但是,它现在说需要名为“包装”的包装……我没有安装.

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

>使用’pip’安装’包装’:

sudo pip安装包装
>将这些导入添加到我的主要Python代码中:

进口六

进口包装

import packaging.version

import packaging.specifIErs

(添加的所有导入都是反复试验,直到PyInstaller制造的可执行文件最终工作完成).

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

总结

以上是内存溢出为你收集整理的32位Linux上的PyInstaller – ImportError:需要’six’包全部内容,希望文章能够帮你解决32位Linux上的PyInstaller – ImportError:需要’six’包所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存