python_d 2.7不会加载__m2crypto_d.pyd

时间:2012-01-18 21:34:40

标签: python m2crypto

我已经使用MSVC 2008构建了python 2.7调试来调试导入M2Crypto的脚本。当我运行我的脚本时,python_d正确地创建了一个Python_Eggs缓存,并将__m2crypto.pyd和__m2crypto_d.pyd复制到其中。但是它会尝试从缓存加载非调试python模块,并因为它不包含调试信息而终止。我已经重建了openssl和M2Crypto,并确保构建机器上没有其他副本(VM。)我已经通过python本身进行了跟踪,无法发现为什么它不会加载_d.pyd。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

首先,问题是python试图加载失败的__m2crypto.pyd的非调试版本,因为它缺少依赖组件。这导致python终止 - 不是因为找不到模块,而是因为找不到它的子节点。这是python的一个关键错误,这是否是python中的一个错误是供其他人思考的。

使用DEPENDENCY,我发现openssl库没有安装到python主文件夹中。这是因为制作M2Crypto分发包的脚本具有不包含这些文件的“功能”。所以以下解决了这个问题:

  1. 使用debug
  2. 构建openssl
  3. 修改M2Crypto \ setup.py中的setup()调用以包含 data_files = ['ssleay32.dll','libeay32.dll']
  4. 使用openssl debug
  5. 使用debug构建M2Crypto
  6. 安装M2Crypto。
  7. 利润!
  8. 之后,我能够将M2Crypto导入python和python_d。