• 请不要在回答技术问题时复制粘贴 AI 生成的内容
findbrick
V2EX  ›  程序员

Python 如何跨平台编译打包?

  •  
  •   findbrick · May 25, 2018 · 8293 views
    This topic created in 2943 days ago, the information mentioned may be changed or developed.

    比如我想在代码发布机器(centos7.3),编译打包.exe 可执行文件,然后可以在 windows 下运行 求教如何实现?

    11 replies    2018-05-25 22:50:39 +08:00
    wlwood
        1
    wlwood  
       May 25, 2018
    搞不了。
    除非,你在 centos 上,搞个 windows 模拟。
    但是,有这折腾,还不如直接在 windows 上直接打包。
    neoblackcap
        2
    neoblackcap  
       May 25, 2018
    是一个脚本还是包括二进制代码?
    不过你们有这样的需要我建议你们还是寄希望与跨平台比较良好的语言,一旦 Python 涉及到 C 扩展,你的跨平台就不好做了。
    polaa
        3
    polaa  
       May 25, 2018
    找个 windows 环境, 用 pyinstaller
    findbrick
        4
    findbrick  
    OP
       May 25, 2018
    @wlwood 尝试很多方案都不行
    @neoblackcap 就是简单的 py 文件 然后编译打包成 exe 文件
    @polaa 只能这样了吗?
    wlwood
        5
    wlwood  
       May 25, 2018
    @findbrick 可以这样,在 windows 上起个 server 服务,centos 上 client, 代码发布到 centos 后触发传递代码到 window 的 server 上执行打包,打包完成,再传递回来。
    master
        6
    master  
       May 25, 2018
    Appveyor →_→
    neoblackcap
        7
    neoblackcap  
       May 25, 2018
    @findbrick 其实如果很简单的程序,可以用 golang 改写,一键编译成对应平台的可执行文件,对于这个,golang 做得还行。如果比较复杂,一定要 Python 的话,那么就用 @wlwood 的方案或者你们上个 CI 服务,最不行你就上个虚拟机吧
    Greenm
        8
    Greenm  
       May 25, 2018
    pytoexe 或者 wine + pyinstaller

    能实现需求,但是不推荐这样做。
    pango
        9
    pango  
       May 25, 2018
    基本无解,不明白怎么会有这样的需求?直接在 win 下面打包 exe 极其简单,不要把问题搞复杂,留着时间陪家里人。

    不然就转 golang 吧,用过 golang 的跨平台编译之后真是感动的要哭。
    jmc891205
        10
    jmc891205  
       May 25, 2018
    做成后端服务。。。然后通过 web 调用。。。
    encro
        11
    encro  
       May 25, 2018
    pip install pyinstaller
    pyinstaller --onefile script.py
    没必要浪费时间。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   966 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 21:49 · PVG 05:49 · LAX 14:49 · JFK 17:49
    ♥ Do have faith in what you're doing.