将Linux上的Python脚本交叉编译为Windows可执行文件

我有一个Python脚本,我想编译成一个Windows可执行文件。 现在, py2exe在Windows下工作正常,但我希望能够从Linux运行。 我的开发机器上有Windows,但是Linux是我的主要开发平台,而且我只是为了创build.exe而重新启动进入Windows。 我也不想购买第二个Windows许可证来运行VirtualBox等虚拟机。 有任何想法吗?

PS:我知道py2exe并没有像python文件那样用Python解释器打包你的脚本。 但无论哪种方式,结果是你不需要安装Python来运行脚本。

你有没有看PyInstaller ?

看来1.4支持交叉编译

http://www.pyinstaller.org/browser/tags/1.4/doc/CHANGES.txt说:

添加对交叉编译的支持:PyInstaller现在能够在Linux下运行时生成Windows可执行文件。 请参阅文档了解更多详情。

我没有自己尝试。

我希望它有帮助

正如其他回答者所提到的,从1.5 , PyInstaller中的交叉编译功能被移除了。 在这里,展示如何使用PyInstaller在wine下打包Python脚本的Windows可执行文件。

第1步:安装wine和Python

 sudo apt-get install wine wine msiexec /i python-2.7.10.msi /L*v log.txt 

PS:较新的Python版本已经包含pip (用于安装pyinstaller )。 从这里下载Python安装包(例如, python-2.7.10.msi

第2步:在Wine上安装PyInstaller

 $ cd ~/.wine/drive_c/Python27 $ wine python.exe Scripts/pip.exe install pyinstaller Successfully installed pyinstaller-3.1.1 pypiwin32-219 

第3步:打包Python脚本

使用pyinstaller打包Python脚本(例如, HelloWorld.py )。

 $ wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile HelloWorld.py # filename: HelloWorld.py #!/usr/bin/env python # -*- coding: utf-8 -*- print('Hello World!') 

Windows可执行文件位于dist/

 $ wine dist/HelloWorld.exe Hello World! fixme:msvcrt:__clean_type_info_names_internal (0x1e24e5b8) stub 

详细描述请参考这里 。

你可以在VirtualBox中运行Windows来运行py2exe。 VBox提供了一个功能强大的命令行客户端来实现自动化任务,所以您可以轻松地集成到开发过程中。

我已经测试了葡萄酒里面的py2exe,它的功能。 你需要在wine中安装python才能正常工作,或者如果你只使用标准libarary,你可以将py2exe与Windows机器上的py2exe捆绑在一起,然后在wine中使用它。 只要记住,你需要在葡萄酒中使用相同版本的ms visual C库来编译python,否则将无法正常工作。