python 无法加载 pyd 二进制模块的解决办法

>>> import socket
Import Error: DLL load failed while import _socket: 参数错误

在没有打过补丁的 win7、2008 系统中,可能会出现上面这个报错,不止是 socket 模块,所有 pyd 二进制模块都无法加载。

问题根源是 python 通过 LoadLibraryExW 加载 pyd 模块,并传入了LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR(即 0x1100)flag 参数,微软 msdn 文档说,这两个 flag 需要安装 KB2533623 补丁才能支持。

然后,你应该会很自然的去找 KB2533623 补丁,却发现无法下载,微软官方下载页竟然报了 404 错误。

继续搜索发现,微软废弃了 KB2533623 补丁,有两个补丁可以替代:

  1. KB4457144:这是个累积补丁,体积有 200 多 MB,不太好装
  2. KB3063858:这个小巧的补丁也能解决,推荐用这个

至于下载地址,我也附上吧。

You may also like...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

扫码去手机上看