0

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

回溯(最近一次通话最后):

  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 应用程序

我该如何解决?

4

1 回答 1

0

我不知道这是否是原因以及它是如何出现的,但是“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

所以也许它不能导入这些库——它们安装了吗?

于 2020-12-15T15:52:48.270 回答