我遇到了一个类似于这里报告的问题,似乎是一个未解决的问题。
在编译exe后,pyinstaller构建会抛出以下错误,很可能是由numpy\core\ init.py引起的:
有一些建议认为这与冲突的numpy安装有关,但是我已经多次卸载和重新安装,并搜索任何其他安装都没有成功。目前正在使用numpy-1.9+MKL二进制文件运行。
我还将multiarray.pyd文件标记为spec文件中的二进制文件以获取。没有成功。
我不知道是什么原因导致这个问题,因为我对init文件结构并不特别熟悉。有什么办法可以导入它吗?
错误的回溯:
Traceback (most recent call last):
File "<string>", line 50, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\mpl_toolkits.basemap", line 15, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib", line 133, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib.rcsetup", line 19, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib.colors", line 52, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy", line 200, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.add_newdocs", line 13, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.lib", line 8, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.lib.type_check", line 11, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.core", line 14, in <module>
ImportError: cannot import name multiarray
源自 init 文件的问题可能导致此问题:
from __future__ import division, absolute_import, print_function
from .info import __doc__
from numpy.version import version as __version__
# disables OpenBLAS affinity setting of the main thread that limits
# python threads or processes to one core
import os
envbak = os.environ.copy()
if 'OPENBLAS_MAIN_FREE' not in os.environ:
os.environ['OPENBLAS_MAIN_FREE'] = '1'
if 'GOTOBLAS_MAIN_FREE' not in os.environ:
os.environ['GOTOBLAS_MAIN_FREE'] = '1'
from . import multiarray
os.environ.clear()
os.environ.update(envbak)
del envbak
del os
from . import umath
from . import _internal # for freeze programs
from . import numerictypes as nt
multiarray.set_typeDict(nt.sctypeDict)
.spec
文件的内容(即在运行pyinstaller
的目录中,您将拥有一个名为GISdev.spec
或类似的文件)。尝试使用--onedir
模式运行 - 有关详细信息,请参见此处。我记得曾经通过这种方式找到过一个未打包的库的部分... - J Richard Snapepyinstaller
的干净安装(从您的路径名中推断),并且使用了一个最小的文件,其中包括import numpy as np
,然后是print numpy.__version__
。这一切都很顺利。我使用的是Python 2.7(再次从您的路径推断)和numpy 1.9。您能否提供一个包含失败部分的最小化版本的Python代码 - 可以查看http://stackoverflow.com/help/mcve以获取有关如何创建失败的最小情况的帮助。 - J Richard Snapepip uninstall
卸载并重新安装,这是至少消除问题的有用方法。 - J Richard Snape.spec
文件,我们可以解决它。a.binaries
是Analysis
对象的成员,而不是文件。你可能想看看http://pythonhosted.org/PyInstaller/#adding-files-to-the-bundle。像我上面说的那样,随着pyinstaller问题的提出,发布`.spec`是一个好主意。 - J Richard Snape