我安装了最新的64位Python 2.5。 我运行该shell,并尝试import socket
,并得到:
>>> import socket Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python25\lib\socket.py", line 45, in <module> import _socket ImportError: DLL load failed with error code 193
我尝试使用64位Python 2.6.6,得到:
>>> import socket Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python26-64\lib\socket.py", line 46, in <module> import _socket ImportError: DLL load failed: %1 is not a valid Win32 application.
这是怎么回事? (我仔细检查,是的,操作系统是64位)。
更新:我也有这个机器上安装的32位python ..如果这是一个冲突,我怎么能安装两个版本的python,并让他们的行为很好?
这两个错误是相同的错误,代码193,报告了两种不同的方式。 这是因为你的64位Python试图加载一个32位的DLL。
很难说这是为什么发生。 也许你错误地安装了一些32位的Python模块。 也许在路上有一些混乱。
但是,解决这类问题的最简单的方法是切换到32位Python,它在64位Windows上运行无可挑剔。 一个好处是,你有时会想要使用只有32位形式的模块 – 64位模块的支持还是有点片面的。
当我使用py2exe生成(32位)二进制文件,然后在同一目录中运行64位解释器时,发生了这种情况。 显然(和合理的),它会选择套接字模块的本地实例(然后加载一个32位的DLL)通过解释器的套接字模块(正确加载一个64位的DLL)。