我正在尝试使用nuitka工具将我的python程序转换为ubuntu上的可执行文件。如果程序没有任何import语句,那么它工作得很好,但当我在导入某些东西的程序上使用它时,它就会中断。
test.py
import numpy
print "hello, world."在命令行中键入以下内容
nuitka --recurse-all --python-version=2.7 test.py并给出了这些错误
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/numarray/functions.py:45: Cannot find 'copyreg' in package 'numpy.numarray' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/npy_pkg_config.py:11: Cannot find 'configparser' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:1765: Cannot find 'Numeric' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/distutils/system_info.py:1770: Cannot find 'numarray' in package 'numpy.distutils' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/f2py/diagnose.py:48: Cannot find 'numpy_distutils' in package 'numpy.f2py' as absolute import.
Nuitka:WARNING:/usr/lib/python2.7/dist-packages/numpy/f2py/diagnose.py:87: Cannot find 'numpy_distutils.command.build_flib' in package 'numpy.f2py' as absolute import.发布于 2016-07-11 18:57:48
我不知道你的特定用例,但我在使用nuitka时也遇到了类似的在包中找不到'‘的错误。
我正在使用sqlalchemy,在使用configparser时遇到了类似的问题。
经过大约一天的调试,我发现Nuitka在SWIG (动态加载的共享对象)中出错了。这基本上意味着,一些程序/模块试图通过使用条件导入来提高兼容性。
例如:
If python_version==3.5:
import thislibrary
else:
import thatlibrary具体来说,configparser库在python3中被命名为configparser,在python2中被命名为ConfigParser。
所以基本上发生的是nuitka试图导入python3的东西,而你显然是在使用python2。
对我来说,修复方法是修改sqlalchemy的源代码,并将if else结构更改为:
import thatlibrary 您可以在Tom Sheffler编写的这个Guide中找到更多信息
发布于 2016-08-08 15:09:25
Official answer from Nuitaka.
你面临的问题同样像另一个用户面临的问题package 'matplotlib' as absolute import.这个问题,然后有nuitaka给下面的评论检查它是否对下面的评论有用。
我想你可能在Windows上使用的是32位的
,达到了2 2GB内存的界限。使用64位可以获得更好的运气。顺便说一句,我正在为下一个版本的可伸缩性改进工作,这应该不会发生这种情况。目前,Nuitka将1000个模块加载到RAM中,并在全局范围内编译它们。需要大量内存。
https://stackoverflow.com/questions/37713589
复制相似问题