中国服务器网

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

我可以在构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。