在32位python解释器中导入64位dll时的ImportError

问题描述 投票:1回答:2

在64位python解释器中导入32位代码的错误代码是

ImportError: DLL load failed: %1 is not a valid Win32 application.

这是在32位python解释器中导入64位代码时引发的相同错误吗?

如果没有,那是什么错误?

python 32bit-64bit
2个回答
1
投票

更新:我误读了原始问题(基于其使用术语“应用程序”时的意思是“扩展模块”)。当您谈论将不兼容的扩展模块加载到Python中时,错误结果应该是相同的; 32位DLL(扩展模块只是Windows上DLL的一个小特例)与64位Python可执行文件不兼容,64位DLL与32位Python可执行文件不兼容,原因相同,错误消息(从尝试动态加载具有不兼容位的DLL时返回的Windows错误代码派生)将是相同的。


关于为后代保留的应用程序与模块的原始答案,但与OP无关:


这肯定不是同一个错误;启动64位程序根本不会导入模块,所以它不会引发ImportError

就此而言,只要操作系统是64位并支持运行32位和64位进程的混合,32位Python就不会遇到启动64位程序的问题;问题是在同一个过程中混合和匹配32位和64位代码;两个不相关的进程可以拥有OS /硬件支持的任何位。


0
投票

在Q&A风格...在64位Windows机器上

运行两个导入...

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyfftw32
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
>>> import pyfftw64
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: %1 is not a valid Win32 application.

因此,在a中加载64bit应用程序也会产生相同的ImportError

我还用其他64位.pyd二进制文件检查了这个,这也给出了类似的错误。

© www.soinside.com 2019 - 2024. All rights reserved.