pyinstaller 使用注意事项
简介:#
经常做一些python脚本给同事用,安装环境,敲命令,安装IDE,就不要想了。
python是脚本型语言,也就不存在编译这个选项了。有个打包工具:pyinstaller,记得是带er的,不带er的我也没用过。
一:安装#
这个是要安装在你的虚拟环境的,不要装在系统环境下,否则扫描不到虚拟环境的包,会执行失败。
二:使用#
pyinstaller ***.py
把你的项目打包到一个dist目录的一个文件夹
pyinstaller -F ***.py
把你的项目打包到一个dist目录的一个文件
一般我配置为pycharm的扩展,鼠标右键点文件就可以了。
三:spec#
打包以后,你就会发现多了一个同名spec文件,这个是pyinstaller打包用的文件。
只有一个py,没有引用其他文件的时候,怎么打包都行的,有引用其他文件的时候,有额外打包的时候,就会出问题了。
Spec 本质上是一个 Python 脚本,其基本结构是大体固定的,但根据生成模式的不同,在最后的步骤上会有所差别。具体的说,当使用单目录模式时,对应的 spec 文件总体格式如下:
a = Analysis(...)
pyz = PYZ(...)
exe = EXE(...)
coll = COLLECT(...)
若使用单文件(onefile)模式的话,则结构是这样的:
a = Analysis(...)
pyz = PYZ(...)
exe = EXE(...)
四:ModuleNotFoundError#
虽然很多的包pyinstaller都可以自动处理,但是还是有各种包是pyinstaller无法自动处理的,就需要手动处理,如下,我这里有个pymssql的包是无法自动处理的,
ModuleNotFoundError: No module named 'pymssql'
需要手动告诉pyinstaller将这个包打包进去。
命令行模式:
--hidden-import Modulename 可以多次使用
例:--hidden-import docx --hidden-import Pillow
修改spec模式:
hiddenimports=['pymssql'],
例:hiddenimports=['docx', 'Pillow'],
五:问题#
现在pyinstaller已经不让在spec文件上使用-F 参数了。
解决方法是打包两次。
先-F打包,修改spec文件hiddenimports,再在spec文件上不用-F打包。
或者 直接打包,修改spec文件hiddenimports,删除coll相关内容,再在spec文件上打包
估计vscode就没这么方便了。
#
作者:上官飞鸿
出处:https://www.cnblogs.com/jackadam/p/17183718.html
版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-03-06 docker samba
2018-03-06 docker pure-ftpd