我正在使用装有 OS 10.7.2 和 Apple 默认 python 2.7.1 的 Mac。我通过源代码安装了 opencv 2.3.1,并且可以确认它import cv
可以在 python 中工作。我创建了一个最小的python脚本(保存为“cvTest.py”),它只import cv
在顶部,没有别的,然后我使用了py2app(通过终端命令py2applet --make-setup cvTest.py; python setup.py py2app
)。当我将生成的独立应用程序移动到未安装 opencv 的另一台计算机(mac、OS 10.7.2)并尝试运行该应用程序时,它会崩溃,并通过 console.app 出现以下错误:
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: Traceback (most recent call last):
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: File "/Users/ra/Downloads/cvTest.app/Contents/Resources/__boot__.py", line 103, in <module>
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: _argv_emulation()
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: File "/Users/ra/Downloads/cvTest.app/Contents/Resources/__boot__.py", line 101, in _argv_emulation
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: _get_argvemulator().mainloop()
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: File "/Users/ra/Downloads/cvTest.app/Contents/Resources/__boot__.py", line 40, in mainloop
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: stoptime = Evt.TickCount() + timeout
11-11-10 1:17:38.591 PM [0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest: AttributeError: 'module' object has no attribute 'TickCount'
11-11-10 1:17:38.661 PM cvTest: cvTest Error
11-11-10 1:17:39.888 PM com.apple.launchd.peruser.502: ([0x0-0xcb9cb9].org.pythonmac.unspecified.cvTest[49524]) Exited with code: 255
然后我创建了一个简单的 bash 脚本,让我深入研究独立应用程序并从终端运行应用程序的二进制文件:
#!/bin/bash
CMD=$0
PROGDIR=$(echo $CMD|perl -pe 's|/[^/]*$||')
cd "$PROGDIR"
"./cvTest.app/Contents/MacOS/cvTest"
执行此操作会产生以下错误:
Traceback (most recent call last):
File "/Users/ra/Downloads/cvTest.app/Contents/Resources/__boot__.py", line 137, in <module>
_run('cvTest.py')
File "/Users/ra/Downloads/cvTest.app/Contents/Resources/__boot__.py", line 134, in _run
execfile(path, globals(), globals())
File "/Users/ra/Downloads/cvTest.app/Contents/Resources/cvTest.py", line 1, in <module>
import cv
File "cv.pyc", line 1, in <module>
ImportError: No module named cv2.cv
2011-11-10 13:18:26.239 cvTest[49578:707] cvTest Error
[Process completed]
那么,这里发生了什么?为什么我会收到错误消息,有什么方法可以将 opencv 与 py2app 创建的应用程序捆绑在一起,这样就import cv
可以了?