Numpy: 导入 numpy c 扩展失败。

创建于 2020-01-05  ·  6评论  ·  资料来源: numpy/numpy

使用 Pyinstaller 创建可执行文件,获取导入 numpy c-extensions 失败。

重现代码示例:

F:\PCS\Documents\Python>type numpytest.py
# -*- coding: utf-8 -*-

import numpy as np
x = np.array([1,2,3])
print(x)
##works fine in python...
python numpytest.py
[1 2 3]



md5-8471f6cd73214bb860e1c999d342677f



## build with pyinstaller, no errors
pyinstaller -F numpytest.py 



md5-751b1907e5a8c901151abcce9d8fb135



>numpytest.exe
Traceback (most recent call last):
  File "f:\python38\lib\site-packages\numpy\core\__init__.py", line 24, in <module>
    from . import multiarray
  File "f:\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "f:\python38\lib\site-packages\numpy\core\multiarray.py", line 14, in <module>
    from . import overrides
  File "f:\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "f:\python38\lib\site-packages\numpy\core\overrides.py", line 7, in <module>
    from numpy.core._multiarray_umath import (
ImportError: DLL load failed while importing _multiarray_umath: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\PCS\Documents\Python\numpytest.py", line 9, in <module>
    import numpy as np
  File "f:\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "f:\python38\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import core
  File "f:\python38\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "f:\python38\lib\site-packages\numpy\core\__init__.py", line 54, in <module>
    raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy c-extensions failed.
- Try uninstalling and reinstalling numpy.
- If you have already done that, then:
  1. Check that you expected to use Python3.8 from "F:\PCS\Documents\Python\dist\numpytest.exe",
     and that you have no directories in your PATH or PYTHONPATH that can
     interfere with the Python and numpy version "1.18.0" you're trying to use.
  2. If (1) looks fine, you can open a new issue at
     https://github.com/numpy/numpy/issues.  Please include details on:
     - how you installed Python
     - how you installed numpy
     - your operating system
     - whether or not you have multiple versions of Python installed
     - if you built from source, your compiler versions and ideally a build log

- If you're working with a numpy git repository, try `git clean -xdf`
  (removes all files not under version control) and rebuild numpy.

Note: this error has many possible causes, so please don't comment on
an existing issue about this - open a new one instead.

Original error was: DLL load failed while importing _multiarray_umath: The specified module could not be found.

[19036] Failed to execute script numpytest

采取的行动:

卸载并重新安装numpy。

Numpy/Python 版本信息:

蟒蛇 3.8.1
麻木 1.18.0
py安装程序 3.5


1.18.0 3.8.1(标签/v3.8.1:1b293b6,2019 年 12 月 18 日,23:11:46)[MSC v.1916 64 位 (AMD64)]

小路:
F:Python38Scripts
F:Python38

最有用的评论

好的,我解决了! 这是 conda (Anaconda) 的问题。
numpy 必须通过 pip 重新安装:
pip install --upgrade --force-reinstall numpy

所有6条评论

#14747
我复制了文件,它可以工作

我有一个非常相似的问题。 可能会打开一个与问题相关的新问题。

有没有人能够在使用 --onefile 选项时纠正这个问题? 我可以在未添加时手动复制并使其工作,但是一旦我使用--onefile,就无处可复制。

有什么解决方法吗?

好的,我解决了! 这是 conda (Anaconda) 的问题。
numpy 必须通过 pip 重新安装:
pip install --upgrade --force-reinstall numpy

只需卸载 numpy 并重新安装它。 问题将得到解决。

此页面是否有帮助?
0 / 5 - 0 等级