查看所有Python相关学习笔记
win版
一、库文件安装
安装相关库:
pip install PyInstaller
二、打包命令
- 直接打包
pyinstaller [参数] 需要打包的py文件
- 通过spec文件打包(直接打包后会生成spec文件,可修改内部参数后根据spec打包)
pyinstaller getmessagefromdb.spec
- 直接打包时,各参数含义
参数 | 含义 |
---|---|
-D | 默认项,不写-F时,默认就是-D,将文件打包成一个文件夹 |
-F | 表示生成单个可执行文件(单个的exe文件) |
-w | 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!(如果打包错误需要再cmd窗口运行查看报错原因,则打包时需要去掉此参数) |
-p | 表示你自己自定义需要加载的类路径,一般情况下用不到,(一般导入的库都在系统path路径内,所以不需要单独使用此参数) |
-i | 表示可执行文件的图标(生成的exe文件对应的图标) |
--add-binary xxx | 加入二进制文件 |
-
直接打包后生成的spec文件内容
三、常见问题
打包后exe文件太大(超过100M)
原因分析:说明调用的库太多或者对应环境中相关的库太多,
解决方案:创建一个虚拟的环境,此环境仅安装必须的库,然后再次环境内打包。(本人使用的anaconda来创建的不同的python环境,建议使用minianaconda来管理python环境)打包后运行exe文件提示:failed to execute script
原因分析:在cmd窗口运行exe文件(打包时不要加-w参数,要不然看不到报错内容),查看具体原因
解决方案:根据具体原因进行调整
- 打包时包含ibm_db库,打包后一直无法正常运行
- 运行时报错:
Traceback (most recent call last): File "case\getmessagefromdb.py", line 1, in <module> from lib.ConnectDB2 import ConnectDB2 as CDB File "d:\anaconda3\envs\py36\lib\site-packages\PyInstaller\loader\pyimod03_imp orters.py", line 627, in exec_module exec(bytecode, module.__dict__) File "lib\ConnectDB2.py", line 4, in <module> import ibm_db,traceback File "d:\anaconda3\envs\py36\lib\site-packages\PyInstaller\loader\pyimod03_imp orters.py", line 627, in exec_module exec(bytecode, module.__dict__) File "site-packages\ibm_db.py", line 10, in <module> File "site-packages\ibm_db.py", line 9, in __bootstrap__ File "imp.py", line 343, in load_dynamic ImportError: DLL load failed: 找不到指定的模块。 [1472] Failed to execute script xxx
- 解决方法:
- 增加环境变量:-p xxx
- 打包时添加参数:--add-binary xxx
- 具体命令(其中
D:\Anaconda3\envs\py36
是我的python安装路径)pyinstaller -F -w -p D:\Anaconda3\envs\py36\Lib\site-packages\clidriver\bin --add-binary D:\Anaconda3\envs\py36\Lib\site-packages\ibm_db_dlls\ibm_db.dll;.\ibm_db_dlls -i sms.ico case/getmessagefromdb.py
- 运行时报错:
四、参考链接
参考链接1:Python打包方法——Pyinstaller
参考链接2:PyInstaller打包python脚本的一些心得
参考链接3:用PyInstaller把Python代码打包成单个独立的exe可执行文件
参考链接4:pyinstaller简洁教程
参考链接5:解决pyinstaller打包时包含ibm_db,运行报错问题
mac版
一、库文件安装
安装相关库:
sudo pip install py2app
二、打包命令
- 进入工程目录下面:
cd ProjectDirctory
- 生成 setup.py 文件:
py2applet --make-setup MyApplication.py
3.清空以前生成的编译文件:
rm -rf build dist
4.生成mac下的应用:
python setup.py py2app
5.生成的应用在dist目录下面