1

M2Crypto をインポートするスクリプトをデバッグするために、MSVC 2008 で Python 2.7 デバッグをビルドしました。スクリプトを実行すると、python_d は正しく Python_Eggs キャッシュを作成し、__m2crypto.pyd と __m2crypto_d.pyd の両方をコピーします。しかしその後、非デバッグ Python モジュールをキャッシュからロードしようとし、デバッグ情報が含まれていないため終了します。openssl と M2Crypto の両方を再構築し、ビルド マシン (VM) に他のコピーが存在しないことを確認しました。Python 自体をトレースしましたが、_d.pyd が読み込まれない理由がわかりません。

なぜこれが起こっているのですか?

4

1 に答える 1

1

まず、問題は、Pythonが非デバッグバージョンの__m2crypto.pydを読み込もうとしたことでしたが、依存コンポーネントがないために失敗しました。これにより、Pythonが終了しました。モジュールが見つからなかったためではなく、子が見つからなかったためです。これはPythonにとって重大なエラーであり、これがPythonのバグであるかどうかは、他の人が考える必要があります。

DEPENDENCYを使用して、opensslライブラリがpythonホームフォルダにインストールされていないことを発見しました。これは、M2Crypto配布パッケージを作成するスクリプトに、これらのファイルを含まない「機能」があるためです。したがって、以下で問題が解決しました。

  1. デバッグを使用してopensslをビルドする
  2. M2Crypto \ setup.pyのsetup()呼び出しを変更して、data_files = ['ssleay32.dll'、'libeay32.dll']を含めます。
  3. opensslデバッグを使用して、デバッグでM2Cryptoをビルドします
  4. M2Cryptoをインストールします。
  5. 利益!

その後、M2Cryptoをpythonとpython_dの両方にインポートすることができました。

于 2012-01-20T18:16:20.773 に答える