代码之家  ›  专栏  ›  技术社区  ›  Chinmay Kanchi

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

  •  45
  • Chinmay Kanchi  · 技术社区  · 16 年前

    我有一个python脚本,我想编译成一个Windows可执行文件。现在, py2exe 在Windows下工作得很好,但是我希望能够从Linux上运行这个。我 在我的开发机器上安装了Windows,但是Linux是我的主要开发平台,我厌倦了重新启动Windows来创建 .exe . 我也不想再购买一个Windows许可证来在虚拟机(如virtualbox)中运行。有什么想法吗?

    附:我知道 PY2EXE 并不像用Python解释器打包脚本那样精确地编译python文件。但是不管怎样,结果是您不需要安装python来运行脚本。

    4 回复  |  直到 7 年前
        1
  •  15
  •   lots0logs luc    7 年前

    你看了吗? PyInstaller ?

    似乎1.4版本支持交叉编译(1.5+中删除了支持)。见 this answer 如何使用葡萄酒下的pyinstaller 1.5+。

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

    添加对交叉编译的支持:PyInstaller现在可以在Linux下运行时生成Windows可执行文件。有关详细信息,请参阅文档。

    我自己没试过。

    我希望它有帮助。

        2
  •  25
  •   SparkAndShine    10 年前

    正如其他应答者所提到的,交叉编译功能将从 PyInstaller 自从 1.5 . 这里,演示如何使用 Py安装程序 在下面 wine .

    第一步:安装葡萄酒和蟒蛇

    sudo apt-get install wine
    wine msiexec /i python-2.7.10.msi /L*v log.txt
    

    PS:更新的python版本已经包括 pip (用于安装 pyinstaller )从下载python安装包 here (例如, 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
    

    步骤3:打包python脚本

    打包python脚本(例如, HelloWorld.py 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
    

    参照 here 详细描述。

        3
  •  4
  •   Adam Crossland    16 年前

    您可以在中运行Windows VirtualBox 为了运行py2exe。vbox提供了一个功能强大的命令行客户机,用于自动化任务,因此您可以轻松地将它集成到开发过程中。

        4
  •  3
  •   Perkins    14 年前

    我在葡萄酒中测试了Py2Exe,它确实起作用。您需要将python安装到wine中才能工作,或者如果您只使用标准libarary,则可以从Windows机器将py2exe与py2exe捆绑在一起,然后在wine中使用它。请记住,在Wine中需要与编译Python相同版本的MS Visual C库,否则将无法正常工作。