64位Python 2.5/2.6+ Windows 7 “import socket” DLL加载错误

4 投票
2 回答
8538 浏览
提问于 2025-04-16 13:34

我安装了最新的64位Python 2.5。我打开命令行,尝试运行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,让它们能和谐共处呢?

2 个回答

0

我遇到过这样的情况:我用py2exe工具创建了一个(32位的)程序,然后在同一个文件夹里运行了64位的解释器。显然(而且这是合理的),它会优先选择本地的socket模块(这会加载一个32位的dll文件),而不是解释器自带的socket模块(这个会正确加载一个64位的dll文件)。

8

这两个错误其实是同一个错误,代码是193,只是以两种不同的方式报告出来。这个错误的原因是你的64位Python试图加载一个32位的DLL文件。

具体为什么会出现这个问题很难说。可能是你不小心安装了一些32位的Python模块,也可能是路径设置上有些混乱。

不过,解决这种问题最简单的方法通常是切换到32位的Python,因为它在64位的Windows上运行得非常顺利。还有一个好处是,有时候你可能需要使用一些只提供32位版本的模块——64位的模块支持还不是特别稳定。

撰写回答