我有一个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可执行文件。
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
)
$ cd ~/.wine/drive_c/Python27 $ wine python.exe Scripts/pip.exe install pyinstaller Successfully installed pyinstaller-3.1.1 pypiwin32-219
使用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,否则将无法正常工作。