python_d 2.7 не будет загружать __m2crypto_d.pyd

Я построил отладку Python 2.7 с MSVC 2008 для отладки скрипта, который импортирует M2Crypto. Когда я запускаю свой скрипт, python_d правильно создает кеш Python_Eggs и копирует в него как __m2crypto.pyd, так и __m2crypto_d.pyd. Но затем он пытается загрузить неотлаженный модуль python из кэша и завершает работу, потому что он не содержит отладочной информации. Я перестроил и openssl, и M2Crypto и убедился, что на сборочной машине (виртуальной машине) не существует никаких других копий. Я проследил через сам python и не могу выяснить, почему он не загружает _d.pyd.

Есть идеи, почему это происходит?

1 ответ

Решение

Во-первых, проблема заключалась в том, что python попытался загрузить не отладочную версию __m2crypto.pyd, что не удалось, поскольку в нем отсутствовали зависимые компоненты. Это привело к завершению работы python - не потому, что модуль не был найден, а потому что один, если его дочерние элементы не были найдены. Это критическая ошибка для python, и другие ли умы могут подумать, является ли это ошибкой в ​​python.

Используя DEPENDENCY, я обнаружил, что библиотеки openssl не были установлены в домашнюю папку python. Это было потому, что скрипт, который делает дистрибутив M2Crypto, имеет "особенность", которая не включает эти файлы. Таким образом, следующее решило проблему:

  1. Сборка openssl с отладкой
  2. Измените вызов setup() в M2Crypto\setup.py, чтобы он включал data_files=['ssleay32.dll','libeay32.dll']
  3. Сборка M2Crypto с отладкой, используя отладку openssl
  4. Установите M2Crypto.
  5. Прибыль!

После этого я смог импортировать M2Crypto как в python, так и в python_d.

Другие вопросы по тегам