【发布时间】:2015-12-25 13:13:58
【问题描述】:
我遇到了与报告的here 类似的问题,这似乎是一个未解决的问题。
编译一个exe后,pyinstaller build抛出如下错误,可能是numpy\core\ init.py引起的
有一些suggestions 与 numpy 安装冲突有关,但是我已经卸载并重新安装了几次,并且没有运气搜索任何其他安装。 当前使用 numpy-1.9+MKL 二进制文件运行。
我还将 multiarray.pyd 文件标记到规范文件中,作为要抓取的二进制文件。没有运气。
不知道是什么原因造成的,因为我对 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
从初始化文件中获取问题的可能原因:
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)
【问题讨论】:
-
我感觉这与 numpy.core 模块中缺少 .py 文件有关。仅存在 pyd 文件,但 init 文件正在尝试导入模块 multiarray。
-
您可以在问题中添加一些内容以加快诊断速度:为您的项目发布
.spec文件的内容(即在您运行pyinstaller的目录中,您将拥有一个名为GISdev.spec或类似文件的文件。尝试使用--onedir模式运行-有关详细信息,请参阅here。我记得曾经通过该路线找到了一个未打包的库... -
好的 - 我有一些时间。我刚刚在 Windows 上完成了
pyinstaller的全新安装(假设来自您的路径名)和一个由import numpy as np后跟print numpy.__version__组成的最小文件。这一切都刚刚好™。我使用了 Python 2.7(再次从您的路径中假设)和 numpy 1.9。您能否提供一个最小版本的 your python 代码在它失败的地方 - 查看stackoverflow.com/help/mcve 以获取有关如何制作一个以您描述的方式失败的最小案例的帮助。 -
对不起,我今晚没有太多时间。还有一个问题-您是在
dist目录而不是build之外运行exe,对吗?如果不是 - 那可能是你的问题(尽管我希望它会因“找不到 Win32”或类似的东西而早先失败。如果这不是问题 - 你可以尝试pip uninstall并重新安装这是一个有用的东西至少消除。 -
很高兴为您提供帮助 - 您想写一个答案还是我来写?我注意到你说“(大部分)”。我希望你能解决最后的弯道。如果问题是您现在无法包含一些您想要的二进制文件 - 发布您的
.spec文件,我们可以解决。a.binaries是Analysis对象的成员,而不是文件。您可能想查看pythonhosted.org/PyInstaller/#adding-files-to-the-bundle。正如我上面所说的,总是发布带有 pyinstaller 问题的.spec是个好主意 - 否则
标签: python numpy build pyinstaller