在Linux上将Python脚本打包为Windows可执行文件
我有一个Python脚本,想把它打包成Windows可执行文件。现在,py2exe
在Windows上运行得很好,但我希望能在Linux上也能做到。我确实在开发机器上有Windows,但Linux是我主要的开发平台,我有点厌烦每次都要重启到Windows去创建.exe
文件。而且我也不想为了在像VirtualBox这样的虚拟机里运行而再买一个Windows的许可证。有没有什么好主意?
顺便说一下,我知道py2exe
并不是严格意义上把Python文件编译成可执行文件,而是把你的脚本和Python解释器打包在一起。不过无论如何,最终的结果是你不需要在运行脚本的机器上安装Python。
7 个回答
我写了一篇关于如何使用PyInstaller在Linux上创建Python的EXE文件的博客文章。下面是总结:
- 如何在Linux上使用PyInstaller和WINE为Python创建EXE文件
- 下载Python 3.8的Windows安装程序
wine python-3.8.9.exe
,然后按照下面的说明操作wine C:/Python38/python.exe -m pip install --upgrade pip
wine C:/Python38/python.exe -m pip install -r requirements.txt
,其中requirements.txt
文件里应该包含PyInstaller本身wine C:/Python38/Scripts/pyinstaller.exe ...
- 完成了!
在WINE中安装Python 3.8的步骤:
- 勾选“将Python 3.8添加到PATH”
- 点击“自定义安装”
- 点击“下一步”
- 选择“为所有用户安装”
- 将安装位置设置为
C:\\Python38
- 点击“安装”按钮
- 关闭窗口。
欢迎阅读这篇文章以获取更多详细信息。
正如其他回答者提到的,自从 PyInstaller 的 1.5
版本开始,跨平台编译的功能就被移除了。下面将展示如何在 wine 环境下,使用 PyInstaller 将 Python 脚本打包成 Windows 可执行文件。
第一步:安装 wine 和 Python
sudo apt-get install wine
wine msiexec /i python-2.7.10.msi /L*v log.txt
补充说明:
较新的 Python 版本已经包含了
pip
(用于安装pyinstaller
)。可以从 这里 下载 Python 安装包(例如:python-2.7.10.msi
)。对于 macos 用户,可以使用
brew cask install xquartz wine-stable
来安装。
第二步:在 wine 上安装 PyInstaller
$ cd ~/.wine/drive_c/Python27
$ wine python.exe Scripts/pip.exe install pyinstaller
Successfully installed pyinstaller-3.1.1 pypiwin32-219
第三步:打包 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
详细说明可以参考 这里。
你有没有看过 PyInstaller 呢?
根据资料,1.4 版本之前的 PyInstaller 支持跨平台编译(在 1.5 及之后的版本中这个功能被移除了)。如果你想知道如何在 Wine 环境下使用 1.5 及以上版本的 PyInstaller,可以参考 这个回答。
官方文档提到:
增加了跨平台编译的支持:PyInstaller 现在可以在 Linux 系统下构建 Windows 可执行文件。具体细节请查看文档。
我自己没有尝试过。
希望这些信息对你有帮助。