首页 > 编程知识 正文

pyinstaller教程,安装pyinstaller报错

时间:2023-05-06 14:01:22 阅读:136159 作者:4449

说明使用pyinstaller打包py文件时,在允许exe时需要没有控制台。 这并不是一项困难的操作,但打包后,如果允许exe,则会显示Failed to execute script xxx.exe的错误信息,直到下午才知道原因和解决方法。

根据打包时输入的参数,预备知识可以进行不同类型的打包。 首先,您需要大致了解一些常见参数。 可能有助于理解解决方法:

- dcreateaone-filebundledexecutable (创建包含可执行文件的单文件夹软件包,换句话说,就是打包出来的程序,会是一个文件夹,里面包含了许多的依赖文件等等,和一个exe可执行文件,就像windows的许多软件一样的形式。)。

- fcreate aone-filebundledexecutable (创建绑定到单个文件的可执行文件,换句话说,就是只会打包出一个exe可执行文件,没有多余的文件。)。

wwindowsandmacosx : donotprovideaconsolewindow

forstandardi/o.onmacosxthisalsotriggers

buildinganosx.app bundle.onwindowsthisoption

willbesetifthefirstscriptisa‘. pyw’file.this

optionisignoredinnixsystems (windows和Mac OSX:不提供控制台窗口标准i/o。 Mac OS X也将触发OS X .app包的生成。 在Windows上选择此选项。 如果第一个脚本是’,请设置。 pyw”文件。 此选项在NIX系统上被忽略。简而言之,在windows上运行时不显示cmd窗口。)

简单示例最简单的打包#这是最简单的打包pyinstaller main.py使用参数-D " "中添加-D的打包可以理解为打包的第一种方法。 -D是缺省值,因此效果与上述相同。 打包完成后,main.py路径下还有一个dist文件夹。 dist文件夹下有一个main文件夹,当您打开它时,它会像我们大多数windows软件一样,包含运行时所需的依赖文件等,但一定会有一个main.exe文件。' 将-F添加到“' pyinstaller -D main.py使用参数-F '”可以理解这是打包的第二种方法,不能与-D同时使用。 打包完成后,main.py路径下还包含一个dist文件夹,但dist文件夹下只有一个main.exe可执行文件。 ' ' ' pyinstaller -F main.py使用参数-w ' '无论是使用-F还是-D参数,打包的exe文件都会在运行时自动打开cmd窗口。 如果希望关闭而不影响程序的执行,则必须在打包时添加-w参数。 无论是-F还是-D,都可以与-w参数结合使用以在运行时关闭打开的cmd窗口。' “' pyinstaller -F -w main.py#或pyinstaller -D -w main.py打包的生成文件. spec文件在我们每次打包时生成的dist、spec

3358 www.Sina.com/#”--*-mode : python; coding 3360 utf-8-- *-block _ cipher=nonea=analysis ([ ' main.py ' ] ),pathex=[ ' c : _ _ SERS hyt hit win_no_prefer_redirects=False,walse noarchive=false (pyz=pyz (a.pure,a.zipped_data,cipher=block

bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True ) 关于这份代码,我们需要知道的是,将console的值即代表着运行时是否打开cmd窗口。而hiddenimports可以帮助我们解决许多报错信息。并且我们可以通过修改.spec文件,然后进行二次打包,速度相对快得多,格式如下: """注意不在是main.py,而是main.spec。比如将原本的console=True改为console=False再进行打包,就不会显示cmd窗口了"""pyinstaller -D -w main.spec 打包的常见误区 打包完成,并不意味着打包成功,这就是为什么有时候生成的exe文件无法运行,仔细观察打包过程的日志信息,往往会有一些报错信息藏在里头,通过这些报错信息,可以很高效的在网上搜索到解决方法。需要打包一个不带命令行窗口的exe时,不要直接一上来就加上-w参数,因为这样可能导致查看不了报错信息,因此无法解决问题。当我们执行带cmd窗口的exe时,即使报错了,也可以在cmd窗口看到报错信息,根据报错信息找到对应的解决方法,然后再进行二次打包,并加上-w参数,就可以完美的打包出一个可以运行的无cmd窗口的exe文件了。 解决方法 当发现打包完成后的exe无法运行,报出Failed to execute script xxx.exe时,可以去除-w参数重新进行打包。再次运行后可以捕捉到报错信息。常见的报错信息如下: No such file or directory: 'C:\Users\HYT\AppData\Local\Temp\_MExx\xxxx错误 关于这个错误,一个可行的解决方法是替换pyinstaller下的hooks文件,以及添加一些缺失的module到.spec文件下的hiddenimports中,然后对该.spec文件进行二次打包。
详细的修改方法可以查看大佬的博客。点击这里 一个可行的打包流程 1.首先不带-w参数打包一份可以显示cmd窗口的exe,进行运行测试。2.注意cmd窗口的日志信息,如果出现报错信息,根据上面的解决方法修改.spec文件的内容以及hooks-xx.py文件。3.确认程序无误后修改.spec文件的console为False,重新对该.spec文件进行二次打包。 -F -D 打包出来的区别 -F打包处理的exe占用的空间通常会比-D打包出来的exe大得多,启动速度上也会快得多,但是只有一个exe,没有多余的文件,使用起来相对也比较方便。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。