python_d 2.7 не будет загружать __m2crypto_d.pyd - PullRequest
1 голос
/ 19 января 2012

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

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

1 Ответ

1 голос
/ 20 января 2012

Во-первых, проблема заключалась в том, что 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.

...