PyInstaller 到底干了什么?真的编译了吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CatCode
V2EX    Python

PyInstaller 到底干了什么?真的编译了吗?

  •  
  •   CatCode 2017-12-27 20:56:47 +08:00 6098 次点击
    这是一个创建于 2874 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近才发现(火星),PyInstaller 可以把 Py 打包成一个 exe,直接再 windows 上跑。
    但是这个时候我就有点儿困惑:PyInstaller 是把 py 代码编译成了 windows 上用的 binary ?还是把需要 py 文件都收集起来,加了个“ mini 版”解释器,运行 exe 时再这个“ mini 版”解释器里运行?

    我粗看了一下 PyInstaller 的官方文档,感觉是前者,但还是不太确定,而且百度无果,所以有前来求证。
    (暂时只考虑 Windows、Python3 的情况)
    15 条回复    2017-12-28 16:33:00 +08:00
    yearliny
        1
    yearliny  
       2017-12-27 20:58:55 +08:00 via Android
    从网上查查就知道了,仅仅是打包本机中的 Python 二进制解释器和相关依赖包。
    CatCode
        2
    CatCode  
    OP
       2017-12-27 21:06:51 +08:00
    @yearliny 就是现在还是无法做到将 py 直接编译成 binary 嘛
    yearliny
        3
    yearliny  
       2017-12-27 21:12:28 +08:00 via Android   1
    @CatCode 建议你多搜索一下这方面的内容,不是什么新鲜东西。Python 可以编译成二进制文件 pyc,可以加快加载速度以及隐藏源码,当你不想让别人知道你的 Python 源码时,可以进行编译。

    你第一次导入模块时,也会生成一个模块相应的 pyc 文件,用来加快导入速度。

    当前运行的 Python 程序,也是先由 Python 编译成机器码然后再运行。
    CatCode
        4
    CatCode  
    OP
       2017-12-27 21:18:23 +08:00
    @yearliny 感谢!刚才也在 PyInstaller 的文档中找到了。
    popu111
        5
    popu111  
       2017-12-27 21:24:46 +08:00 via Android
    @yearliny 然鹅 pyc 能开倒车。。。也就加快一点速度了
    Va1n3R
        6
    Va1n3R  
       2017-12-27 21:31:06 +08:00
    “ mini 版”解释器,把各种依赖放在一起了。。。
    Va1n3R
        7
    Va1n3R  
       2017-12-27 21:31:54 +08:00
    很多时候还会缺失 python3.x.dll
    xrlin
        8
    xrlin  
       2017-12-27 23:23:55 +08:00 via iPhone   1
    只是打包运行环境和库
    nyanyh
        9
    nyanyh  
       2017-12-27 23:39:46 +08:00
    @popu111 开倒车的问题可以通过混淆+替换解析器 opcode 在一定程度上解决
    Owenjia
        10
    Owenjia  
       2017-12-28 00:03:35 +08:00   1
    @CatCode
    看看这个 http://nuitka.net
    Tink
        11
    Tink  
    PRO
       2017-12-28 00:05:28 +08:00 via iPhone
    这货有时候还挺好用的,前几天给财务的妹子写了个操作 excel 的工具,第一次用这个打包之后发现用起来还挺溜
    mxmai
        12
    mxmai  
       2017-12-28 08:54:49 +08:00
    好像是打包所有安装好的扩展包而不是程序依赖的扩展的。之前将一个在 anaconda 环境下的 py 文件转成 exe,结果文件有 200+M。
    kokutou
        13
    kokutou  
       2017-12-28 10:12:36 +08:00 via Android
    nuitka 真的编译了。
    CatCode
        14
    CatCode  
    OP
       2017-12-28 16:05:17 +08:00
    @Owenjia @kokutou 我还看到了 Cython,这两个有什么区别嘛?
    Va1n3R
        15
    Va1n3R  
       2017-12-28 16:33:00 +08:00
    @kokutou 请教一下,nuitka 相关文档好少,想问一下,编译成可执行文件的时候 nuitka 会自动解决依赖问题吗!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4650 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 09:57 PVG 17:57 LAX 01:57 JFK 04:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86