使用py2exe打包Python脚本时出现win32crypt.pyd加载失败错误求助
解决py2exe打包win32crypt时的MemoryLoadLibrary错误
针对你遇到的ImportError: MemoryLoadLibrary failed loading win32crypt.pyd: The specified module could not be found. (126)错误,以下是几种可行的解决方法:
1. 手动添加pywin32依赖文件
py2exe在Python 3.11环境下可能未自动识别win32crypt的关联依赖DLL,需在setup.py中显式指定包含相关文件:
修改后的setup.py代码:
import py2exe import os from pywin32_system32 import __file__ as pywin32_sys_file # 获取pywin32系统文件目录 pywin32_dir = os.path.dirname(pywin32_sys_file) py2exe.freeze( windows=[ { "script": "script.py", } ], options={ "py2exe": { "includes": ["win32crypt", "pywintypes"], "packages": ["pywin32_system32"], # 复制依赖的DLL到输出目录(注意替换版本号为你的Python对应版本,如3.11对应311) "data_files": [ (".", [os.path.join(pywin32_dir, "pywintypes311.dll"), os.path.join(pywin32_dir, "pythoncom311.dll")]) ] } } )
2. 调整py2exe或pywin32版本
py2exe 0.13与Python 3.11的兼容性可能存在问题,尝试降级py2exe或升级pywin32:
# 降级py2exe到稳定兼容版本 pip install py2exe==0.12.0.0 # 或升级pywin32到最新版 pip install --upgrade pywin32
3. 更换打包工具
若上述方法无效,可切换到对pywin32支持更稳定的PyInstaller:
# 安装PyInstaller pip install pyinstaller # 打包脚本(--onefile参数生成单文件exe) pyinstaller --onefile script.py
错误原因说明
错误代码126本质是依赖的动态链接库未找到,win32crypt.pyd依赖pywintypesXX.dll和pythoncomXX.dll(XX为Python版本号),py2exe在Python 3.11环境下的自动依赖收集逻辑可能遗漏了这些文件,或MemoryLoadLibrary的加载机制存在兼容性问题。
内容的提问来源于stack exchange,提问作者matszwecja
相关产品推荐
相关产品推荐

