Python+OpenCV+py2app : numpy. core.multiarray导入失败

标签 python macos opencv numpy py2app

环境:mac os x 10.7.5、xcode 4.2.1、python 2.7.5、opencv 2.4.7、py2app 0.7.3

我正在尝试使用 py2app 打包一个简单的基于 opencv 的 python 脚本,但构建的应用程序崩溃并出现错误,提示 ImportError: numpy.core.multiarray failed to import

这是名为 demoApp.py 的 python 脚本

import cv2
capture = cv2.VideoCapture(0)
winName = 'eyeDetection'
cv2.namedWindow(winName)

# Press esc key to exit
keyPressed = -1
while(keyPressed != 27): # ord('esc') is 27
    unused_retval, img0 = capture.read()
    img1 = cv2.cvtColor(img0, cv2.COLOR_BGR2GRAY)

    cv2.imshow(winName, img1) 
    keyPressed = cv2.waitKey(1)
cv2.destroyAllWindows()

demoApp.py 从 eclipse+pydev IDE 启动时按预期运行。

我创建了 setup.py 文件:

py2applet --make-setup demoApp.py

内容如下:

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['demoApp.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

然后我构建应用程序:

python setup.py py2app

运行该应用程序会导致其崩溃并出现上述 ImportError。

我删除了 build 和 dist 文件夹并尝试以“别名”模式构建应用程序:

python setup.py py2app -A

然后,当我运行该应用程序时,它会按预期运行。所以我不明白为什么独立应用程序在构建分发时无法运行。

请帮我弄清楚如何处理这个问题。另外,demoApp.app 是 50Mb,如何减小它的大小?

最佳答案

虽然我还没有找到合适的解决方案,这个问题可能是由于 64 位 python27 和 32 位 numpy 可计算性问题引起的,但快速解决方法是在导入 cv2 之前在 demoApp.py 脚本中 import numpy .

在使用 PyInstaller 之后demoApp.app 文件现在是 6Mb 而不是 py2app 而不是 50Mb :D

尽管通过 PyInstaller 生成的应用在没有上述解决方法的情况下也出现了同样的问题。

关于Python+OpenCV+py2app : numpy. core.multiarray导入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242421/

相关文章:

python - 如何获取数据框中字段列表的前 3 次出现?

python - 将多个用户输入附加到列表

python - 如何确定语料库中的哪些文本包含Python中的NLTK套件生成的错误?

macos - 如何在 Visual Studio 代码中自定义触摸栏?

c++ - 如何配置音频回调

xcode - 编译错误Xcode 4.3.1-> OpenCv Framework

python - 向量化数组的行

css - 悬停在自动填充建议上时输入的文本非常小

c++ - OpenGL 纹理未正确显示 - 奇怪的行为

python - Opencv python HoughLinesP 奇怪的结果