最近发现了一个挺厉害的人工智能学习 站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程
废话不多说,请看正文!
一、使用虚拟环境
使用pyinstaller 打包程序,如果直接在原来的环境中打包,出来的软件包会出现没有调用的库,增大了软件包,可能几K的程序打包出来软件却是几百MB.
使用: pip install pipenv 安装pipenv 虚拟环境.
在终端进入一个自己建立的文件夹例如:cd try
使用命令:
使用 pip install ××× (你的程序里面调用的库)
然后 pip install pyinstaller 安装打包库.
输入 pyinstaller -w -D test.py 开始打包程序.
要想打包成功这样是远远不够的.
二、配置.spec 文件.
1、.spec 文件主要配置三个变量.
hiddenimports 这里需要把你的程序的所有库填写进去例如:
- 在调用PyQt 时在代码中尽可能写清楚调用那个模块,如from PyQt5.QtWidgets import *,而不要直接import PyQt5 因为这样会直接打包整个PyQt5,这样软件包的体积就会增大.
- 如果你的代码中并没有直接调用numpy,但是你调用的某个库中调用了numpy,那么你就要在hiddenimports增加这个库.
- 如果你打包后,运行软件提示你没有某一个库,那么你就要使用pip 安装这个库,同时在hiddenimports增加这个库的名称.当然如果提示是没有’pkg_resources.py2_warn'这个库,直接添加在hiddenimports就好,不用安装.
2、datas 这里是把你的程序的数据增加进入
例如:
增加的时候要具体到那个文件,不然数据不会复制到软件包中.第一个参数是文件位置,第二个参数是软件包中存放的位置.
3、binaries 这个是用来增加.dll/.so文件的,有时候打包是自己配置的.dll/.so文件,那么就需要这个变量了.
你可能不知道自己少了什么.dll/.so文件,但是运行软件时会提示:PyInstallerImportError: Failed to load dynlib/dll ‘C:UsersevyinAppDataLocalTemp_MEI18~1pyzbarlibiconv.dll’. Most probably this dynlib/dll was not found when the application was frozen.
少了什么.dll/.so,找到位置增加进binaries就好了.或者你也可以直接将.dll/.so文件复制到你打包好的软件包中.
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208731 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!