在cxfreeze中,我可以指定我希望可执行文件使用的python版本吗?

时间:2014-04-04 13:27:34

标签: opencv cx-freeze

情况:
在我的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位版本。

1 个答案:

答案 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

希望这会有所帮助。