情况:
在我的Mac OS 10.8.5中,我有python2.7和python2.7-32以及最新的cx_freeze(-4.3.2)。
我需要cx_freeze来选择python2.7-32版本,这样我的可执行应用程序就可以使用32位版本的OpenCV。
到目前为止,所有使用cx_freeze脚本的尝试都表明它捆绑了python2.7(64位)并且应用程序无法执行:“cv2.so:mach-o,但架构错误” (如果您尝试导入32位内置的OpenCV,并且python解释器为64,则会出现相同的错误)
有没有办法“强制”cxfreeze将安装的特定python版本(在本例中为python2.7-32)捆绑在它生成的可执行文件中?
编辑:
我还尝试使用以下方法从32位源构建cx-freeze:
python2.7-32 setup.py build;
python2.7-32 setup.py install
无论如何,生成的应用仍然是64位版本:
$ python2.7-32 setup.py bdist_dmg
$ file capturebasic
capturebasic:Mach-O 64位可执行文件x86_64$ arch -i386 ./capturebasic
arch:posix_spawnp:./ capturebasic:可执行文件中的CPU类型错误
EDIT2:
从sourceforge下载的Mac的cx_freeze似乎只有64位:
http://sourceforge.net/projects/cx-freeze/files/4.3.2/
如果要创建32位应用程序,则需要32位版本的cx_freeze。
我正在确认是否有办法在cx_freeze的邮件列表中安装Mac版的32位版本。
答案 0 :(得分:0)
我相信您不必触摸您的设置脚本,只需更改用于构建它的命令即可。例如,您可以使用命令python setup.py build
而不是python2.7-32 setup.py build
。您可能必须指定python2.7-32 exe的路径。像path\to\python2.7-32.exe setup.py build
这样的东西。注意:我使用的是Windows,因此我使用的示例命令在mac上可能略有不同,而不是.exe
它是.app
。
希望这会有所帮助。