python_d 2.7 将不会加载 __m2crypto_d.pyd

发布于 2024-12-27 20:36:00 字数 291 浏览 1 评论 0原文

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

有什么想法为什么会发生这种情况吗?

I've built python 2.7 debug with MSVC 2008 to debug a script that imports M2Crypto. When I run my script, python_d correctly creates a Python_Eggs cache, and copies both the __m2crypto.pyd and __m2crypto_d.pyd into it. But then it attempts to load the non-debug python module from the cache, and terminates because it contains no debug information. I've rebuilt both openssl and M2Crypto and made certain that no other copies exist on the build machine (a VM.) I've traced through python itself and cannot discover why it will not load the _d.pyd.

Any ideas why this is happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡忘如思 2025-01-03 20:36:00

首先,问题是 python 尝试加载 __m2crypto.pyd 的非调试版本,但失败了,因为它缺少依赖组件。这导致 python 终止 - 不是因为找不到模块,而是因为没有找到其子模块。这对于 python 来说是一个严重错误,这是否是 python 中的一个 bug 值得其他人思考。

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

  1. 使用 debug 构建 openssl
  2. 修改 M2Crypto\setup.py 中的 setup() 调用以包含 data_files=['ssleay32.dll','libeay32.dll']
  3. 使用以下命令构建 M2Crypto调试,使用 openssl debug
  4. 安装 M2Crypto。
  5. 利润!

之后,我能够将 M2Crypto 导入到 python 和 python_d 中。

First, the problem was that python attempted to load the non-debug version of __m2crypto.pyd, which failed, because it lacked dependent components. This caused python to terminate - not because the module was not found, but because one if its children was not found. This is a critical error for python, and whether this is a bug in python is for other minds to contemplate.

Using DEPENDENCY, I discovered that the openssl libraries were not installed into the python home folder. This was because the script that makes the M2Crypto distribution package has a "feature" which does not include these files. So the following resolved the issue:

  1. Build openssl with debug
  2. Modify the setup() call in M2Crypto\setup.py to include data_files=['ssleay32.dll','libeay32.dll']
  3. Build M2Crypto with debug, using the openssl debug
  4. Install M2Crypto.
  5. Profit!

Afterwards, I was able to import M2Crypto into both python and python_d.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文