请教大佬,怎么把 Python 项目打包成 exe 程序 - 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
vincekang
V2EX    Python

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

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

    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 的启动脚本,内容:
    @.\pythn.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     Solana     924 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:03 PVG 04:03 LAX 12:03 JFK 15:03
    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