我可以在构buildpyinstaller可执行文件时控制体系结构(32位和64位)吗?

简短的问题
在构buildpyinstaller可执行文件时,有没有办法控制/保证体系结构(32位和64位)?

背景
我从py2exe迁移到pyinstaller是因为缺乏64位的支持以及一些我很难看的过去的小事情。 所以在这个笔记上,我不想回到它。 我使用Python 2.7 64位开发了两个应用程序,并且在32位机器上运行时遇到性能问题。

首先是一个简单的wxPython GUI(版本2.9),并连接到一个USB驱动程序的Windows DLL文件。 这个看起来非常“安全”,以32位的方式运行,因为没有只有64位的模块。 但是,在32位Windows XP上运行时,这个应用程序在与USB设备交谈时会遇到可怕的性能问题。

第二个应用程序要大得多,我还没有试图build立和运行,因为害怕架构问题。 这个应用程序只有一个64位的模块(psycopg2)。 我想远离试图build立这个如果不可能作为一个32位的可执行文件运行。

当前的想法
我觉得这可能是可行的(如果模块有32位支持),通过在32位模式下强制运行python build.py。 这有意义吗?

更新
我在build设的第一个项目上有了几个突破。 事实certificate,性能问题完全取决于两台机器的速度。 我的开发机器有足够的能力来轮询USB设备足够快,而慢得多的testing平台(Windows XP)没有。

我通过修改USB端口轮询的方式解决了这个问题。 现在,这是固定的,我可以在两个系统上运行exe。 尝试将可执行文件构build为单个文件时,出现了一个新问题。 当运行pyinstaller的Build.py时,它将引入应用程序需要运行的所有必需的DLL。 这似乎起初工作很好,但是当我试图运行我build立在Windows 7 64位的单个exe,它不会在Windows XP上运行,因为USBencryption狗的DLL不被识别为有效的DLL。

为了让单个exe在两个系统上运行,我首先尝试从.spec文件(它似乎是一个python脚本)中删除DLL。 这很方便,因为我可以使用普通的python list修饰符修改build命令之前的包含列表。 我的希望是,如果在exe的临时目录中找不到该DLL,它会在系统PATH上find它。 虽然这种方法可能工作,但我不能没有抛出很多错误就运行。

我的第二个尝试是在Windows XP机器上build立应用程序(离开DLLembedded),希望Win XP DLL能够在Windows 7中工作。成功! 这个configuration工作正常。 但是我坚信,这不是最好的解决scheme,因为它完全依赖于在较新的操作系统上运行的较旧的DLL。

Pyinstaller根据你用来构建它的python生成一个二进制文件。 所以,如果你使用Python 2.7 64位,据我所知,不可能产生一个32位的可执行文件。 这是因为Pyinstaller归档所有模块及其依赖项(dll,pyds等),这是64位由于python安装。

如前所述,由于交叉兼容性问题,构建32位二进制文​​件更好。 也许你可以指定更多的问题。

如果您正在构建应用程序,并且在32位Windows上运行良好,则无需创建64位版本。 只需创建一个32位版本并在两种架构上运行它。 什么是WOW64的。

如果您需要使用仅64位的库或功能,则只需构建一个64位版本。 如果功能仅为64位,则构建32位版本没有任何意义。

构建64位和32位版本的唯一原因是利用增加的64位窗口的地址空间。 即如果你打算分配超过1或2 GB的内存。 一个例子可能是图像编辑应用程序或数据操作应用程序。 然后,您可以在平台的限制范围内运行在32位平台上,但可以在64位平台上编辑更大的图像或大量的数据。

IOW,为你的情况下,按照@Velociraptors的建议,并建立在32位的Python如果你正在建立一个32位的EXE。