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
vincekang
V2EX  ›  Python

请教大佬,怎么把 Python 项目打包成 exe 程序

  •  
  •   vincekang · 2020-09-12 18:46:23 +08:00 · 5331 次点击
    这是一个创建于 1536 天前的主题,其中的信息可能已经有所发展或是发生改变。

    logo_tr.png

    请大佬指点,这是我用 Python 开发的爬虫项目InfoSpider,issues 中提到最多的就是安装环境出现问题,如何把这个项目打包成.exe 程序,让用户直接双击打开即可使用,从而免去安装 python 环境和各种库的麻烦,有哪些比较成熟的方案或者哪些工具能实现这个需求? 在此先感谢大佬不吝指点!项目地址

    40 条回复    2020-10-20 19:16:14 +08:00
    skylee03
        1
    skylee03  
       2020-09-12 18:49:00 +08:00
    pyinstaller
    dlsflh
        2
    dlsflh  
       2020-09-12 19:26:35 +08:00 via Android   ❤️ 1
    我觉得打包后你就该愁如何减小体积了,是个大坑…
    waytoshine
        3
    waytoshine  
       2020-09-12 19:52:06 +08:00 via Android
    用 python 搞 exe,是个大坑,恭喜你踏上了一条没有尽头的路
    tetora
        4
    tetora  
       2020-09-12 19:57:13 +08:00 via Android
    把环境搭建写成脚本
    benjix
        5
    benjix  
       2020-09-12 20:06:27 +08:00 via Android
    pyinstaller,nuitka
    love
        6
    love  
       2020-09-12 20:22:42 +08:00
    其实最简单的方法是下个绿色 python,写个启动脚本就行,我以前就是这么干的
    676529483
        7
    676529483  
       2020-09-12 20:31:46 +08:00
    pyinstaller + 1,其他的基本都是特定平台的
    renmu123
        8
    renmu123  
       2020-09-12 20:57:33 +08:00 via Android
    Python 下打包基本只有 pyinstaller 可用,但是坑点非常多,用起来体验是比较难受的
    ila
        9
    ila  
       2020-09-12 21:02:51 +08:00 via Android
    欢迎来到 golang,一键编译,一个 exe
    Enying
        10
    Enying  
       2020-09-12 21:04:22 +08:00 via Android
    这个也是我最近想玩的
    z0wjqnxi
        11
    z0wjqnxi  
       2020-09-12 21:09:59 +08:00 via iPhone
    exe 打出来可能比 docker 镜像都大…
    darer
        12
    darer  
       2020-09-12 21:11:15 +08:00   ❤️ 3
    开源项目做那么多保姆行为干啥…
    他们不会用就让他们去提升自己
    limuyan44
        13
    limuyan44  
       2020-09-12 21:32:27 +08:00
    以前我学的时候也很疑惑,后来我打开搜索引擎,看了几个文章 5 分钟后我已经跑出第一个包了。
    jin7
        14
    jin7  
       2020-09-12 22:27:43 +08:00
    弄 docker 镜像也不错. 不用适配各种系统了...
    弄成 exe 貌似 pyinstaller 比较简单
    Oceanhime
        15
    Oceanhime  
       2020-09-12 22:33:02 +08:00
    我觉得, 你 "提供数据分析功能\基于用户数据生成图表文件" 都能写了, 不至于连打包成 exe 都不会吧 XD
    cherbim
        16
    cherbim  
       2020-09-12 22:49:51 +08:00 via iPhone
    盲猜下一个问题,py 打包成 exe 体积怎么那么大
    fansangg
        17
    fansangg  
       2020-09-12 23:01:30 +08:00
    你带 gui 的还是算了吧,很坑的。
    xJogger
        18
    xJogger  
       2020-09-12 23:04:31 +08:00   ❤️ 6
    1. 下载 embed 版 Python 并解压: https://www.python.org/downloads/windows/
    2. 下载 get-pip 并放入 embed 版 Python 文件夹中: https://pip.pypa.io/en/latest/installing/
    3. 打开 embed 版 Python 中的 python**._pth,其中**是版本号,掉 import site 前的注释。
    3. 命令行运行 .\python.exe .\get-pip.py
    4. 安装需要的 python 模块 .\python.exe -m pip install 模块名 -i https://pypi.doubanio.com/simple --no-warn-script-location
    5. 建立一个 bat 的启动脚本,内容:
    @.\python.exe .\程序的入口文件.py
    @pause
    xJogger
        19
    xJogger  
       2020-09-12 23:07:16 +08:00   ❤️ 1
    如果没有什么隐性依赖,那就 Pyinstaller 一把梭:
    pyinstaller -F .\程序入口.py -i .\图标文件.ico
    如果单文件太大,可以打包成文件夹:
    pyinstaller .\程序入口.py -i .\图标文件.ico
    lxilu
        20
    lxilu  
       2020-09-12 23:32:46 +08:00 via iPhone
    建议打包后 release 仍留存不打包的,不然对能搞环境的不好
    tomczhen
        21
    tomczhen  
       2020-09-12 23:36:57 +08:00 via Android
    exe 付费提供。

    不愿意付费又不想自己装个运行环境的 Windows 用户就放弃吧。
    njzjz
        22
    njzjz  
       2020-09-13 07:56:45 +08:00   ❤️ 1
    vincekang
        23
    vincekang  
    OP
       2020-09-13 10:41:35 +08:00 via iPhone
    @xJogger
    @renmu123
    @benjix
    @skylee03
    @njzjz
    @tomczhen
    谢谢大佬们的指点👋
    vincekang
        24
    vincekang  
    OP
       2020-09-13 10:42:12 +08:00 via iPhone
    @tomczhen 思路可以👍
    vincekang
        25
    vincekang  
    OP
       2020-09-13 10:42:50 +08:00 via iPhone
    @love 绿色 python 是什么?
    301
        26
    301  
       2020-09-13 12:29:10 +08:00 via Android
    @vincekang portable version,免安装版,即#18 提到的 embed 版
    vincekang
        27
    vincekang  
    OP
       2020-09-13 12:37:30 +08:00 via iPhone
    @301 谢谢🙏我研究研究
    calmzhu
        28
    calmzhu  
       2020-09-13 14:25:17 +08:00
    这名字配色咋看着这么眼熟🐶
    jeeyong
        29
    jeeyong  
       2020-09-13 16:54:25 +08:00
    体积大的问题还好吧..
    磁盘也不缺, 网络速度也够快
    johnsona
        30
    johnsona  
       2020-09-13 17:04:24 +08:00
    @xJogger 安装完依赖模块之后,python 和依赖模块整个 copy 到相同平台的系统就可以跑了吗?还是说,依赖包先下载,目标系统再执行一次离线安装?
    xJogger
        31
    xJogger  
       2020-09-13 17:41:47 +08:00 via Android
    @jsisjs20130824 直接把 embed 版 Python 文件夹拷贝走就能用
    lipcao
        32
    lipcao  
       2020-09-14 10:21:05 +08:00
    用 bat 脚本更方便吧,安装 python 环境,配置环境变量,启动 py 文件一气呵成
    lipcao
        33
    lipcao  
       2020-09-14 10:21:52 +08:00
    忽略我的回复
    vincekang
        34
    vincekang  
    OP
       2020-09-14 10:32:56 +08:00 via iPhone
    @lipcao 哈哈😄
    Macv1994
        35
    Macv1994  
       2020-09-21 09:25:24 +08:00
    pyinstaller 最大的坑在于 打包出来的东西十分大 这个大小取决于你 引入了多少第三方库
    sxy960806
        36
    sxy960806  
       2020-09-29 01:44:07 +08:00 via Android
    @xJogger 竟然和我最近写的部署脚本一模一样,握手🤝
    xJogger
        37
    xJogger  
       2020-09-29 07:16:34 +08:00 via Android
    @vincekang 大佬,您的 infoSpider 有没有兴趣增加一下 bangumi.tv 的支持?一个类似于豆瓣的网站,主要用来记录 ACGN 的阅读 /观看历史。
    vincekang
        38
    vincekang  
    OP
       2020-10-20 09:50:49 +08:00
    @xJogger 大佬,非常感谢的方法#18,我今天照着你的方法对我的项目[InfoSpider]( https://infospider.vercel.app/)进行了 Python-embed 版本的制作,非常顺利,整个环境制作下载有 350MB 大小(晚点我会[发布]( https://infospider.vercel.app/)),虽然有点大不利于传播,但是解决用户安装环境出错的一大痛点,非常感谢你!
    vincekang
        39
    vincekang  
    OP
       2020-10-20 09:53:13 +08:00
    @xJogger 你说的 bangumi.tv 这个网站需要 fq 哦,可能用户数据也不多,我在研究研究看能不能加入到 [InfoSpider]( https://infospider.vercel.app)
    vincekang
        40
    vincekang  
    OP
       2020-10-20 19:16:14 +08:00
    @cherbim
    @dlsflh
    你们猜对了,哈哈,打包好之后 350MB
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5450 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:59 · PVG 14:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.