我已经使用MSVC 2008构建了python 2.7调试来调试导入M2Crypto的脚本。当我运行我的脚本时,python_d正确地创建了一个Python_Eggs缓存,并将__m2crypto.pyd和__m2crypto_d.pyd复制到其中。但是它会尝试从缓存加载非调试python模块,并因为它不包含调试信息而终止。我已经重建了openssl和M2Crypto,并确保构建机器上没有其他副本(VM。)我已经通过python本身进行了跟踪,无法发现为什么它不会加载_d.pyd。
为什么会发生这种情况?
答案 0 :(得分:1)
首先,问题是python试图加载失败的__m2crypto.pyd的非调试版本,因为它缺少依赖组件。这导致python终止 - 不是因为找不到模块,而是因为找不到它的子节点。这是python的一个关键错误,这是否是python中的一个错误是供其他人思考的。
使用DEPENDENCY,我发现openssl库没有安装到python主文件夹中。这是因为制作M2Crypto分发包的脚本具有不包含这些文件的“功能”。所以以下解决了这个问题:
之后,我能够将M2Crypto导入python和python_d。