首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
华为云
V2EX  ›  Python

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

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

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

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

    当前运行的 Python 程序,也是先由 Python 编译成机器码然后再运行。
        4
    CatCode   235 天前
    @yearliny 感谢!刚才也在 PyInstaller 的文档中找到了。
        5
    popu111   235 天前 via Android
    @yearliny 然鹅 pyc 能开倒车。。。也就加快一点速度了
        6
    Va1n3R   235 天前
    “ mini 版”解释器,把各种依赖放在一起了。。。
        7
    Va1n3R   235 天前
    很多时候还会缺失 python3.x.dll
        8
    xrlin   235 天前 via iPhone   ♥ 1
    只是打包运行环境和库
        9
    nyanyh   235 天前
    @popu111 开倒车的问题可以通过混淆+替换解析器 opcode 在一定程度上解决
        10
    Owenjia   235 天前   ♥ 1
    @CatCode
    看看这个 http://nuitka.net
        11
    Tink   235 天前 via iPhone
    这货有时候还挺好用的,前几天给财务的妹子写了个操作 excel 的工具,第一次用这个打包之后发现用起来还挺溜
        12
    mxmai   235 天前
    好像是打包所有安装好的扩展包而不是程序依赖的扩展的。之前将一个在 anaconda 环境下的 py 文件转成 exe,结果文件有 200+M。
        13
    kokutou   235 天前 via Android
    nuitka 真的编译了。
        14
    CatCode   235 天前
    @Owenjia @kokutou 我还看到了 Cython,这两个有什么区别嘛?
        15
    Va1n3R   235 天前
    @kokutou 请教一下,nuitka 相关文档好少,想问一下,编译成可执行文件的时候 nuitka 会自动解决依赖问题吗!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2427 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 10:40 · PVG 18:40 · LAX 03:40 · JFK 06:40
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1