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

问题描述 投票:0回答:7

我有一个 Python 脚本,我想将其编译为 Windows 可执行文件。现在,

py2exe
在 Windows 上运行良好,但我希望能够在 Linux 上运行它。我的开发机器上确实有 Windows,但 Linux 是我的主要开发平台,我有点厌倦了只是为了创建 .exe 才重新启动到 Windows。我也不想购买第二个 Windows 许可证才能在 VirtualBox 等虚拟机中运行。有什么想法吗?

PS:我知道

py2exe

并不完全编译 python 文件,而是使用 Python 解释器打包脚本。但无论哪种方式,结果都是您不需要安装 Python 来运行脚本。

    

python linux windows py2exe
7个回答
45
投票
1.5

以来,交叉编译功能已从 PyInstaller 中删除。在这里,展示如何使用

wine
下的 PyInstaller 从 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
    
    

  • 对于 Macos 用户,请使用
  • brew cask install xquartz wine-stable

    
    

  • 第2步:在wine上安装PyInstaller

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

第三步:打包Python脚本

使用

HelloWorld.py

打包 Python 脚本(例如

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!')

Windows 可执行文件位于 
dist/

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

详细说明请参阅
此处


21
投票
PyInstaller

吗? 似乎1.4以上的版本都支持交叉编译(1.5+中删除了支持)。请参阅

这个答案

了解如何在 Wine 下使用 PyInstaller 1.5+ 来完成此操作。

文档

说:

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

我自己没试过。

希望对你有帮助


4
投票
博客文章

,介绍如何使用 PyInstaller 执行此操作。总结如下:

如何使用 PyInstaller 和 WINE 在 Linux 上为 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 添加到路径”
  1. 点击“自定义安装”
  2. 点击“下一步”
  3. 单击“为所有用户安装”
  4. 将安装位置设置为
  5. C:\\Python38
  6. 点击“安装”
  7. 关上窗户。
请随时阅读帖子以获取更多详细信息。


3
投票
VirtualBox

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


3
投票

下载wine和python

  1. https://www.python.org/downloads/release/python-3810/

    下载 Windows 版本的 python

  2. 安装wine
  3. sudo apt install wine

    
    

  4. 打开终端并运行
  5. wine the-python-exe-you-downloaded

    
    

  6. 运行
  7. find ~/.wine -name pip.exe

    这将为您提供点路径:

    
    

/home/yourusername/.wine/drive_c/users/yourusername/Local Settings/Application Data/Programs/Python/Python38/Scripts/pip.exe

安装pyinstaller

奔跑

wine /home/yourusername/.wine/drive_c/users/yourusername/Local\ Settings/Application\ Data/Programs/Python/Python38/Scripts/pip.exe install pyinstaller

打包您的文件

找到安装路径

find ~/.wine -name pyinstaller.exe

wine /home/yourusernmae/.wine/drive_c/users/yourusername/Local\ Settings/Application\ Data/Programs/Python/Python38/Scripts/pyinstaller.exe --onefile yourpythonfile

    


2
投票


0
投票
https://stackoverflow.com/a/67857785/23262833

测试平台:Ubuntu 22.04、Wine 9.0、Python 3.12

从 winehq 下载页面下载 wine 9.0 -

https://wiki.winehq.org/Ubuntu

(ubuntu 存储库有可用的 wine 6.0)。 您可以运行Pyinstaller来构建Windows .exe应用程序; 您可以运行 Innosetup 来为您的 Windows 应用程序创建安装程序。

© www.soinside.com 2019 - 2024. All rights reserved.