前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >py 打包exe

py 打包exe

原创
作者头像
花落花相惜
发布2021-12-04 10:25:50
1.3K0
发布2021-12-04 10:25:50
举报
文章被收录于专栏:花落的技术专栏

py打包成exe如何打的足够小

Python脚本不能在没有安装Python的机器上运行,如果我们想把自己的脚本分享给没有python环境的小伙伴使用,这个时候就需要将脚本打包成exe文件,即使使用方电脑没有安装python解释器,这个exe也能在上面运行。

一、 常规打包

1、安装Pyinstaller

代码语言:txt
复制
pip install PyInstaller

用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像。

其中,比较常用的国内镜像包括:

(1)阿里云

http://mirrors.aliyun.com/pypi/simple/

(2)豆瓣http://pypi.douban.com/simple/

(3)清华大学

https://pypi.tuna.tsinghua.edu.cn/simple/

(4)中国科学技术大学

http://pypi.mirrors.ustc.edu.cn/simple/

(5)华中科技大学http://pypi.hustunique.com/

可以在使用pip的时候,加上参数-i和镜像地址

代码语言:txt
复制
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyInstaller # 清华源
代码语言:txt
复制
pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源

2、Pyinstaller打包步骤

1、Windows+R键输入cmd切换到我们放文件的目录

2、执行命令`Pyinstaller -F -w -i picture.ico

xxx.py.执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹.已经生成了一个名为xxx`的exe应用程序,并且图标也是我们设置的picture图案,看来已经成功一半了.

3、Pyinstaller参数详解

-F参数代表制作独立的可执行程序

-w是指程序启动的时候不会打开命令行。如果不加-w的参数,就会有黑洞洞的控制台窗口出来。此外,-w参数在GUI界面时非常有用。

-i picture.ico就是指设置自己的图标图案,因为默认打包图片是下图这样的。这个参数也可以写成--icon=prcture.ico

这几个常用参数就说完了,其他参数可自行查阅

image-20210114225235577.png

小结如下:

代码语言:txt
复制
yinstaller -F py_word.py  # 打包exe
代码语言:txt
复制
Pyinstaller -F -w py_word.py  # 不带控制台的打包
代码语言:txt
复制
Pyinstaller -F -w -i chengzi.ico py_word.py  # 打包指定exe图标打包

4、ico图片生成

自己做的软件都喜欢放上自己的图标,不过哪来那么多ico图片呢?

一个是可以找专门的ico图片网站,如:阿里巴巴矢量图。

另一个是可以自己生成,这里就给大家分享一个网站,可以把其他格式图片转成ico格式:https://app.xunjiepdf.com/img2icon/

二、压缩打包

假如生成的exe太大,怎么转换的小一点,我们试过一些方法。比如:pipenv

虚拟环境、使用开源的upx压缩等等,但是往往要么过程比较麻烦,要么成功率不高(压缩成不成功看心情)。

总结一下最简单且成功率极高的方法——conda创建虚拟环境。

1、Python打包为什么大?

在压缩打包之前,先简单说一下为什么Python打包过大?

Python打包exe,不但体积大而且运行慢。解释型语言相对较慢。要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编。

还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”

所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。

那最适合的就是——虚拟环境了!

2、虚拟环境

Python创建虚拟环境的方法有很多,而我是个Anaconda忠实用户,如果你跟我一样,那就简单了。(大家也可以使用Virtualenv、Pipenv来设置虚拟环境,善用搜索,方法大同小异)

Anaconda环境使用如下:

代码语言:txt
复制
conda create -n 虚拟环境名字 python==3.6  #创建虚拟环境
代码语言:txt
复制
conda activate 虚拟环境名字  #激活虚拟环境
代码语言:txt
复制
conda deactivate  #退出虚拟环境
代码语言:txt
复制
conda remove -n env_name--all  # 删除虚拟环境

在创建过程中需要回复(y/n),Yes,再激活虚拟环境.

conda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下.

当然我们也可以在创建的窗口,使用命令conda info --envs,来查看conda环境下所有的虚拟环境

3、安装所需的库

输入conda list可以查看当前虚拟环境里已经安装的库。

如果我们打包的脚本需要安装额外的库,安装方式同上安装Pyinstaller操作

安装好之后可以查看,安装过程中会有依赖的库,就不需要管了。

4、Pyinstaller打包步骤

操作同上面常规打包

小结如下

代码语言:txt
复制
虚拟环境+打包的全过程(3步)
代码语言:txt
复制
#创建虚拟环境
代码语言:txt
复制
conda create -n env_name python=3.6
代码语言:txt
复制
#激活虚拟环境
代码语言:txt
复制
conda activate env_name
代码语言:txt
复制
#Pyinstaller打包
代码语言:txt
复制
Pyinstaller -F -w -i picture.ico xxx.py

总结一点注意事项

  • 在安装库是要注意一些库名,比如docx这个库不要pip install docx,而是需要pip install python-docx
  • 还有一些库可能因为版本不同导致不能使用,多尝试就好了。
  • 为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险
  • 打包为exe的话,版本是否选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。
  • 该打包方式不支持跨平台(类似于软件Windows和Linux不同)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • py打包成exe如何打的足够小
  • 一、 常规打包
    • 1、安装Pyinstaller
      • 2、Pyinstaller打包步骤
        • 3、Pyinstaller参数详解
          • 4、ico图片生成
          • 二、压缩打包
            • 1、Python打包为什么大?
              • 2、虚拟环境
                • 3、安装所需的库
                  • 4、Pyinstaller打包步骤
                    • 总结一点注意事项
                    相关产品与服务
                    区块链
                    云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档