2013-11-27 71 views
3

环境:Mac OS X的10.7.5时,Xcode 4.2.1,2.7.5蟒,OpenCV的2.4.7,py2app 0.7.3的Python + OpenCV的+ py2app:numpy.core.multiarray未能导入

我我试图用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,我怎样才能减小它的大小?

回答

1

虽然我还没有找到一个合适的解决方案,这个问题可能是由于64位python27和32位numpy可计算性问题导致cv2导致demoApp.py脚本中的import numpy

并使用PyInstaller代替py2app的demoApp.app文件之后是现在6MB代替50Mb的的:d

虽然经由PyInstaller产生的应用程序给出了相同的问题,而无需上述的解决方法。

+0

虽然我还没有看到这个确切的问题,但我可以确认足够的问题与64位Python相似,我甚至不再使用64位Python。即使在2016年,我也不认为生态系统已经准备就绪 –