在Linux上将Python脚本打包为Windows可执行文件

72 投票
7 回答
93759 浏览
提问于 2025-04-15 23:24

我有一个Python脚本,想把它打包成Windows可执行文件。现在,py2exe在Windows上运行得很好,但我希望能在Linux上也能做到。我确实在开发机器上有Windows,但Linux是我主要的开发平台,我有点厌烦每次都要重启到Windows去创建.exe文件。而且我也不想为了在像VirtualBox这样的虚拟机里运行而再买一个Windows的许可证。有没有什么好主意?

顺便说一下,我知道py2exe并不是严格意义上把Python文件编译成可执行文件,而是把你的脚本和Python解释器打包在一起。不过无论如何,最终的结果是你不需要在运行脚本的机器上安装Python。

7 个回答

5

我写了一篇关于如何使用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的步骤:

  1. 勾选“将Python 3.8添加到PATH”
  2. 点击“自定义安装”
  3. 点击“下一步”
  4. 选择“为所有用户安装”
  5. 将安装位置设置为C:\\Python38
  6. 点击“安装”按钮
  7. 关闭窗口。

欢迎阅读这篇文章以获取更多详细信息。

46

正如其他回答者提到的,自从 PyInstaller1.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

详细说明可以参考 这里

22

你有没有看过 PyInstaller 呢?

根据资料,1.4 版本之前的 PyInstaller 支持跨平台编译(在 1.5 及之后的版本中这个功能被移除了)。如果你想知道如何在 Wine 环境下使用 1.5 及以上版本的 PyInstaller,可以参考 这个回答

官方文档提到:

增加了跨平台编译的支持:PyInstaller 现在可以在 Linux 系统下构建 Windows 可执行文件。具体细节请查看文档。

我自己没有尝试过。

希望这些信息对你有帮助。

撰写回答