【问题标题】:Why can't I use scipy despite having it installed?为什么尽管安装了 scipy 却不能使用它?
【发布时间】:2021-03-26 06:42:25
【问题描述】:

我已经在 Windows Powershell 上使用 pip 安装了 SciPy。我使用了命令py -m pip install scipy。这行得通。然后我尝试将 scipy 导入 Python,但出现此错误

Traceback(最近一次调用最后一次):

  File "C:\Users\monzu\Documents\model of membrane-fiber interactions.py", line 2, in <module>
    import scipy
  File "C:\Users\monzu\AppData\Roaming\Python\Python39\site-packages\scipy\__init__.py", line 61, in <module>
    from numpy import show_config as show_numpy_config
  File "C:\Users\monzu\AppData\Roaming\Python\Python39\site-packages\numpy\__init__.py", line 138, in <module>
    from . import _distributor_init
  File "C:\Users\monzu\AppData\Roaming\Python\Python39\site-packages\numpy\_distributor_init.py", line 26, in <module>
    WinDLL(os.path.abspath(filename))
  File "C:\Users\monzu\AppData\Local\Programs\Python\Python39-32\lib\ctypes\__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)

OSError: [WinError 193] %1 不是有效的 Win32 应用程序

我该如何解决这个问题?

【问题讨论】:

标签: python python-3.x scipy python-3.9 oserror


【解决方案1】:

我不知道这是否是原因以及它是如何出现的,但是“Python39-32”和“不是有效的 Win32 应用程序”可能表明某些库的版本不匹配,32 位与 64 位,还是缺少一些依赖?也许是一个 64 位的 python/numpy?正在尝试为 cython 库导入 32 位 DLL(异常的最后两行)。

编辑:我打开了 __distributo_init.py 文件,有这些 DLL 加载:

   #Load Intel C, Fortran, and OMP runtime DLLs into the process
    import ctypes
    ctypes.CDLL(os.path.join(path, 'libmmd.dll'))
    ctypes.CDLL(os.path.join(path, 'libifcoremd.dll'))
    ctypes.CDLL(os.path.join(path, 'libiomp5md.dll'))

ctypes.CDLL 是失败的类的实例。

然后:

if handle is None:
        self._handle = _dlopen(self._name, mode)
    else:
        self._handle = handle

所以也许它无法导入这些库 - 它们是否已安装?

【讨论】:

  • 我如何知道我是否安装了它们
  • 搜索文件。
  • 我没有安装它们
  • 你在哪里搜索的?在我的机器上,我在以下位置找到了它们:C:\Program Files\Python38\Lib\site-packages\numpy\DLLs\ 因此,如果它们丢失,可能与 numpy 安装或不兼容的版本有关,可能需要删除一些冲突的库并使用更具体的版本再次安装。
  • 我在python 39文件夹中搜索。有一个 numpy 文件夹,但 numpy 文件夹中没有 DLL 文件夹。如何确定哪个库发生冲突?
猜你喜欢
  • 2021-10-11
  • 1970-01-01
  • 2014-08-24
  • 2021-07-25
  • 2019-12-26
  • 2016-11-29
  • 2016-12-31
  • 2012-09-16
  • 2022-01-14
相关资源
最近更新 更多