2012-01-18 27 views
1

我已經構建了python 2.7與MSVC 2008調試來調試導入M2Crypto的腳本。當我運行我的腳本時,python_d會正確創建一個Python_Eggs緩存,並將__m2crypto.pyd和__m2crypto_d.pyd同時複製到它。但是,它會嘗試從緩存中加載非調試python模塊,並終止,因爲它不包含調試信息。我已經重建了openssl和M2Crypto,並確保在構建機器(VM)上不存在其他副本。我已經通過python本身進行了追蹤,並且無法發現爲什麼它不會加載_d.pyd。python_d 2.7將不會加載__m2crypto_d.pyd

任何想法爲什麼會發生這種情況?

回答

1

首先,問題是python嘗試加載__m2crypto.pyd的非調試版本,該版本失敗了,因爲它缺少依賴組件。這導致python終止 - 不是因爲模塊沒有找到,而是因爲沒有找到它的子模塊。這是python的一個嚴重錯誤,並且這是否是python中的一個錯誤,是其他人想到的。

使用DEPENDENCY,我發現openssl庫沒有安裝到python home文件夾中。這是因爲製作M2Crypto分發包的腳本具有不包含這些文件的「功能」。所以下面的解決了這個問題:

  1. 構建的OpenSSL與調試
  2. 修改M2Crypto \ setup.py設置()調用包括data_files = [ 'ssleay32.dll', '的libeay32.dll']
  3. 使用openssl調試構建M2Crypto並進行調試
  4. 安裝M2Crypto。
  5. 利潤!

之後,我能夠將M2Crypto導入到python和python_d中。