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)」许可协议进行许可。

posted @   上官飞鸿  阅读(260)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源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
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示