import scipy error:无法导入名称' _ccallback_c'

时间:2018-03-07 15:25:41

标签: python scipy

我使用Anaconda3@windows导入scipy(v1.0.0)但编译时出错。我在网上检查了其他类似的案例,但没有找到解决方案,有没有人有任何想法?

import numpy as np
import scipy

错误消息

  

ImportError Traceback(最近一次调用   最后)in()         1导入numpy为np   ----> 2导入scipy

     

〜\ AppData \ Roaming \ Python \ Python36 \ site-packages \ scipy__init __。py in   ()       116 del _NumpyVersion       117    - > 118来自scipy._lib._ccallback导入LowLevelCallable       119       120来自scipy._lib._testutils导入PytestTester

     

〜\应用程序数据\漫游\的Python \ Python36 \站点包\ scipy_lib_ccallback.py   in()   ----> 1来自。 import _ccallback_c         2         3导入ctypes         4         5 PyCFuncPtr = ctypes.CFUNCTYPE(ctypes.c_void_p)。 base [0]

     

ImportError:无法导入名称' _ccallback_c'

4 个答案:

答案 0 :(得分:4)

找到解决方案!

  1. 删除scipy(整个文件夹),在我的电脑里,在C:\ Users(你的名字)\ AppData \ Roaming \ Python \ Python36 \ site-packages \ scipy *
  2. https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
  3. 下载scipy
  4. 通过pip install scipy-1.0.0-cp36-cp36m-win_amd64.whl重新安装(我的操作系统是windows-64bit)
  5. 那就是它!

答案 1 :(得分:1)

我遇到了同样的问题,并尝试了所有推荐的解决方案(以多种不同方式重新安装),但是没有任何效果。 有用的是更仔细地阅读文档(https://www.scipy.org/install.html) 就我而言,scipy库还需要安装其他库的一些最新版本,因此我运行: python -m pip install numpy scipy matplotlib ipython jupyter pandas sympy鼻子

现在一切正常。

答案 2 :(得分:1)

同意Daria Simonova,请尝试 conda update numpy scipy matplotlib ipython jupyter pandas sympy nose 如果您正在使用Anaconda。

答案 3 :(得分:0)

在深入研究之后,为了给出完整的背景知识,首先 SciPy 依赖于已经安装了 NumPy。 SciPy 轮的 setup.py 文件使用 NumPy 功能来配置和安装轮。

SciPy setup.py

...

if __name__ == '__main__':
    from numpy.distutils.core import setup
    setup(**configuration(top_path='').todict())

其次,当刚尝试使用轮子时,如果遇到此错误,您可以在检查轮子文件后看到原因是二进制轮子有共享对象文件的命名约定,这里称为{{ 1}},而是根据二进制轮支持的架构命名。当尝试通过 _ccallback_c.so 中的文件名导入共享对象时,它找不到它,因此出现此错误(/_lib/_ccallback.py 中的第 1 行),因为它没有被命名为 /_lib/_ccallback.py,而是被称为 { {1}} 或其他架构变体:

_ccallback_c.so

这些文件名可能是尚未运行 NumPy 设置过程或与 Cython 相关的东西,我不太确定。但最简单的解决方法是将 .whl 扩展名更改为 .zip 并将所有相关的 .so 文件重命名为不包含架构片段。然后更改 .zip -> .whl 就可以了。