gpt4 book ai didi

python - OpenSSL 和 M2crypto 不能在 OS X Mavericks 上协同工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:01 26 4
gpt4 key购买 nike

当我尝试使用 Python 2.7.5 导入 M2crypto 时,出现以下错误

ImportError: dlopen(/Users/user/.python-eggs/M2Crypto-0.21.1-py2.7-macosx-10.9-intel.egg-tmp/M2Crypto/__m2crypto.so, 2): 符号未找到:_PEM_read_bio_SSL_SESSION
引用自:/Users/user/.python-eggs/M2Crypto-0.21.1-py2.7-macosx-10.9-intel.egg-tmp/M2Crypto/__m2crypto.so
预期在:平面命名空间
在/Users/user/.python-eggs/M2Crypto-0.21.1-py2.7-macosx-10.9-intel.egg-tmp/M2Crypto/__m2crypto.so

我使用 brew 安装 OpenSSL,但我感觉这是导致错误的原因。我也尝试过将 OpenSSL 的 brew 版本符号链接(symbolic link)到默认版本,但没有成功。有什么想法吗?

最佳答案

一些帮助、建议、对错误的解释,但也许不是完整的答案:

查看 OpenSSL @ https://github.com/mxcl/homebrew/blob/master/Library/Formula/openssl.rb 的 Brew 配方,您构建的 OpenSSL 似乎很可能只是 64 位。在为 Python 构建扩展时,如果您针对操作系统默认的 Python 进行构建,它通常只有在您构建通用二进制文件 (i386+x86_64) 时才能正常工作

OSX 在 10.9 SDK 中默认提供 OpenSSL,您可以安全地构建它,但如果您需要更新的 OpenSSL,这可能会导致一些问题。

一些调试技巧:

  1. 运行 'file/Users/user/.python-eggs/M2Crypto-0.21.1-py2.7-macosx-10.9-intel.egg-tmp/M2Crypto/__m2crypto.so' 来弄清楚你的图书馆建成。我敢打赌它只会说 x86_64 共享库,而不是胖共享库 (i386 + x86_64)

  2. 通过导出 DYLD_INSERT_LIBRARIES=/usr/local/lib/$WHATEVER_LIBOPENSSLS_FILENAME_IS 将您的 OpenSSL 库添加到您的共享库预加载列表

还有一些其他的想法——“期望在平面命名空间中”的问题通常通过在编译时传递 ld -flat_namespace 来解决。这应该默认发生,如果不是 - 那有点奇怪。自 10.5 或 10.6 以来,这一直不是 OSX 上 Python 的“标准”问题。

M2Crypto 没有看到很多事件,最后一次提交是在 2011 年。我个人会根据您的需要切换到不同的加密库。

--- 编辑 ---

试试这个,做一个 make distclean(或 make clean,以哪个为准)

然后试试这个:

只需将这个 blob 剪切并粘贴到“make”的末尾——这是一个命令:

SDK_DIR="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/" \
LDFLAGS="-isysroot ${SDK_DIR}" \
CPPFLAGS="-I${SDK_DIR}/usr/include -isysroot ${SDK_DIR}" \
CFLAGS="-I${SDK_DIR}/usr/include -isysroot ${SDK_DIR}" \
./configure && make

如果这不起作用,请将以下标志添加到 CFLAGS 和 LDFLAGS

-flat_namespace -undefined suppress

再试一次?我很确定您不应该再使用这些标志中的任何一个,但对于像 M2Crypto 这样古老的东西,它可能需要它。

关于python - OpenSSL 和 M2crypto 不能在 OS X Mavericks 上协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com