python - OpenCv(豹)中的 "mach-o, but wrong architecture"

标签 python opencv

我已经从这个 doc 安装了 OpenCV与 CMake 。 我的 ~/.profile 文件是:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export ARCHFLAGS="-arch i386 -arch x86_64"
export ARCHFLAGS="-arch i386" 
export VERSIONER_PYTHON_PREFER_64_BIT=yes
export VERSIONER_PYTHON_PREFER_32_BIT=no
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PYTHONPATH=/Library/Python/2.6/site-packages:$PYTHONPATH    
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib

使用 import cv 我有这个错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: dlopen(/usr/local/lib/python2.6/site-packages/cv2.so, 2): no suitable image found.  Did find:
    /usr/local/lib/python2.6/site-packages/cv2.so: mach-o, but wrong architecture

我的 python 架构:

file "$( "$(which python)" -c "import sys;print(sys.executable)" )"
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

我已经在 stackoverflow 中阅读并运行了所有关于 OpenCV 和 Leopard 的答案,但仍然高于错误。 对此的任何帮助将不胜感激。

提前致谢

最佳答案

Leopard(和雪豹)是一个杂交种,它包含两个二进制文件:32 位和 64 位...并将它们混合在一起...这是一场噩梦。据我所知,您不能在同一个运行程序中混合使用 32 位和 64 位库。

我用过这个技巧:How to force /usr/bin/gcc -> /usr/bin/gcc -m32?

它使一切都可以在 i386(march 32 位)中编译。您也可以将其强制设置为 64(不推荐)。它还修复了许多其他编译问题。 请记住,这是一个 hack。

备份/usr/bin/,进行 hack,编译打开的 cv 并删除 hack。

其他解决方案是升级到 lion(到目前为止)似乎没有 32/64 位问题。

有用的命令还有:

lipo -info /usr/local/lib/python2.6/site-packages/cv2.so
arch -i386 /usr/bin/python

Lipo 检查共享对象和后者的架构 How do I force Python to be 32-bit on Snow Leopard and other 32-bit/64-bit questions .也许你可以通过强制 python 使用与 cv2 相同的架构来解决这个问题......

编辑

我注意到您使用的是 macport cv2 和 apple python。运行代码时尝试/opt/local/bin/python2.6

关于python - OpenCv(豹)中的 "mach-o, but wrong architecture",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675298/

相关文章:

python - 不重复python的排列

python - 从 SQLAlchemy InstrumentedAttribute 中提取一个 weekday() (列类型是 datetime)

python - 将 1 channel 骨架图像叠加到 3 channel RGB 图像上

使用 CUDA 的负片(反)图像(图像无法显示)

OpenCV 找不到 Prime Sense 和 OpenNI

c++ - GtkImage 不会更新并且 opencv 不会释放图像

python - pytest-qt 测试对话框

java - java 与 python 结构相似的功能

python - 在python中调用文件

JavaCV内存不足,分配内存失败