XAr*_*gon 4 linux pyinstaller six
我正在使用Python2.7和Kivy1.9.2-dev创建一个程序,并尝试将它与PyInstaller-3.0打包为不同的系统作为单个可执行文件.
我试图打包它的系统是这些:
在所有这些系统上,当只运行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
Run Code Online (Sandbox Code Playgroud)
这是我很困惑的事情:
所以,我的问题非常典型,可能会导致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的可执行文件不需要任何这些导入,但至少它现在可以工作,并且可执行文件大小基本上不受影响.
| 归档时间: |
|
| 查看次数: |
4703 次 |
| 最近记录: |