我正在使用Python2.7和Kivy1.9.2-dev的程序,并试图与PyInstaller-3.0打包作为一个单一的可执行文件不同的系统。PyInstaller在32位Linux - 导入错误: '六' 包需要
我试图将它打包为是这些的系统:
- 64位Linux薄荷17.3
- 32位Linux薄荷 17(而升级到17.1和17.3也试过)
- 32位Windows XP SP3
- Raspbian(树莓派)
在所有这些系统中的程序运作良好时,刚刚与Python,U运行ncompiled。 (所以,所有的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
这就是我感到困惑:
- 里面我“的/ usr /本地/lib/python2.7/dist-packages/“没有”pkg_resources“文件夹,但上面显示它显然存在......它甚至可以成功读取文件。它是否在可执行文件启动时被创建?
- 我没有特别使用“六”作任何事情,在这个错误之前,我甚至都不知道它存在。
- “Six”IS已安装在我的系统上,由Package Manager和Pip确认。它位于“/usr/local/lib/python2.7/dist-packages/”中。我猜PyInstaller无法找到它出于某种原因(因为,我相信,如果一切都打包正确,它不必在那里的可执行文件运行系统)
所以,我的问题是非常典型的,PyInstaller可能导致这个问题(以防万一,我DID运行“setup.py install”),以及如何解决/修复它?
谢谢!
PS:在一个侧面说明,我提到了Windows和Raspbian可执行文件的问题。在Windows上,只有在同一文件夹中存在“zlib1.dll”的情况下才运行该exe文件(即使使用PyInstaller专门将其打包到exe文件中,它也不起作用),而在Raspbian上,我只能在没有使用“ --onefile“(带”--onefile“,似乎PyInstaller不会将任何Python二进制文件打包到可执行文件中,比如libpython.2.7.so,也可能是其他文件)