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

Chi*_*chi 53 python linux windows py2exe cross-compiling

我有一个Python脚本,我想编译成Windows可执行文件.现在,py2exe从Windows工作正常,但我希望能够从Linux运行它.我的是Windows我的开发机器上,但Linux是我的主要开发平台,我得到一种重新启动进入Windows刚刚创建的生病的.exe.我也不想购买第二个Windows许可证以在VirtualBox等虚拟机中运行.有任何想法吗?

PS:我知道py2exe没有完全编译python文件,就像使用Python解释器打包脚本一样.但无论哪种方式,结果都是您不需要安装Python来运行脚本.

Spa*_*ine 30

正如其他回答者所提到的,从那以后就从PyInstaller中删除了交叉编译功能1.5.在这里,展示如何包装使用Python脚本Windows可执行PyInstaller的葡萄酒.

第1步:安装wine和Python

sudo apt-get install wine
wine msiexec /i python-2.7.10.msi /L*v log.txt
Run Code Online (Sandbox Code Playgroud)

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

第2步:在葡萄酒上安装PyInstaller

$ cd ~/.wine/drive_c/Python27
$ wine python.exe Scripts/pip.exe install pyinstaller

Successfully installed pyinstaller-3.1.1 pypiwin32-219
Run Code Online (Sandbox Code Playgroud)

第3步:打包Python脚本

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

$ wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile HelloWorld.py

# filename: HelloWorld.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print('Hello World!')
Run Code Online (Sandbox Code Playgroud)

Windows可执行文件位于dist/.

$ wine dist/HelloWorld.exe 
Hello World!
fixme:msvcrt:__clean_type_info_names_internal (0x1e24e5b8) stub
Run Code Online (Sandbox Code Playgroud)

有关详细说明,请参阅此处.

  • 您还必须在 wine 中安装所有依赖项(尽管您可能在 Ubuntu 中安装了它)。__确保您的应用程序使用命令运行__ `wine python appli.py` (2认同)

luc*_*luc 18

你看过PyInstaller了吗?

似乎1.4版本支持交叉编译(支持在1.5+中删除).请参阅此答案,了解如何使用Wine下的PyInstaller 1.5+.

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

添加对交叉编译的支持:PyInstaller现在能够在Linux下运行时构建Windows可执行文件.有关详细信息,请参阅文档

我自己没试过.

我希望它有所帮助

  • 对于未来的访问者,这是工作链接:https://groups.google.com/forum/?fromgroups#!topic/pyinstaller/veq3BlA_Bns (10认同)
  • 此功能正在取消:https://groups.google.com/forum/?fromgroups#!searchin/PepInstaller/linux $ 20windows/pyinstaller/veq3BlA_Bns (4认同)
  • 正如@hoju所提到的,自1.5以来,此功能已从PyInstaller中删除.请参阅http://www.pyinstaller.org/wiki/FAQ#Features:"在版本1.4中我们已经为此构建了一些支持,但它只显示了一半.它需要在另一个分区上安装一些Windows系统,并且只会为纯Python程序工作.只要你想要一个像样的GUI(gtk,qt,wx),你就需要安装Windows库.所以只使用Wine就容易多了." (3认同)

Ada*_*and 5

您可以在VirtualBox中运行Windows 以运行py2exe。VBox提供了功能强大的命令行客户端来自动执行任务,因此您可以轻松地将其集成到开发过程中。

  • 从技术上讲,这需要我拥有第二个Windows许可证,而我不希望参与其中。但是无论如何还是要+1。 (4认同)