欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pyinstaller failed to execute script

程序员文章站 2024-02-04 08:09:22
...

打包

tips:欢迎大家收藏我的WordPress: http://www.jnxcc.top/
例子使用pachonggui.py

  1. 正常执行一遍
pyinstaller -Fw pachonggui.py
  1. 给脚本加一行代码
import PyQt5.sip

然后再执行同样的命令

pyinstaller -Fw pachonggui.py
  1. 删掉import PyQt5.sip,可以继续写代码了。如果要打包,从1开始

出现failed to execute script的排查方法

法一:

命令执行完毕之后 build\pachonggui\warnpachonggui.txt,上面会记载着错误

法二:

# 使用完下面这条指令之后,打开exe,提示failed to execute script
pyinstaller -Fw pachonggui.py
# 然后执行下面这条执行,会在list下生成一个目录,进入该目录,用**命令行**执行该exe,就会看到错误了
pyinstaller -D pachonggui.py
pyinstaller打包使用pyqt5模块的时候,在win平台下,由于pyinstaller无法准确获取QT动态库文件路径,会报错导致无法打开运行程序,并提示错误信息pyinstaller failed to execute script pyi_rth_qt5plugins此时我们需要在打包的时候直接告诉pyinstaller到哪里去找,这个路径分隔符需要是unix形式:

pyinstaller --paths C:/****/Python/Python35-32/Lib/site-packages/PyQt5/Qt/bin -F -w ****.py

pyqt5打包问题经过

这里用到的文件是pachonggui.py,里面使用了pyqt5 的库

安装好pyinstaller后,先使用下面的命令对脚本进行打包

pyinstaller.exe -Fw .\pachonggui.py

pyinstaller failed to execute script

执行完毕,生成两个目录

pyinstaller failed to execute script

exe文件在dist目录下

双击运行出现Failed to execute script pachonggui错误

pyinstaller failed to execute script

先去build目录那里,找到warn***.txt文件,里面会记录一些错误

pyinstaller failed to execute script

这里可以看到,pyqt5的库没有找到

分析:正常来说,如果pyinstallerpip3安装好的,那么pyqt5应该也在同一个目录下,应该不会出现找不到路径的情况.所以说,有两种情况,一个是pyinstaller错了,一个是pyqt5错了,这里我先指定pyqt5的路径让它试试

找到python3的安装路径,我的是如下

pyinstaller failed to execute script

然后使用--path 指定库目录,有一点需要注意:这里用的是/作为目录分隔符,而不是\

pyinstaller.exe --path E:/Python/Python36-32/Lib/site-packages/PyQt5/Qt/bin -Fw .\pachonggui.
py

重新打包之后,再次运行,报同样的错误,看build目录下的warn***.txt文件,还是同样的,没有找到PyQt5的库

因为本人安装了python2.7python3.6,但是我只给python2.7配置了环境变量,所以说,命令行那里的pyinstallerpython27目录下的,而不是python36-32目录下的,所以说,接下来,我命令提示符那里指定使用python36-32下的pyinstaller试试

pyinstaller failed to execute script

执行打包命令之后,看到命令提示符,多了一些东西sip not found,不管它先,先记下来,然后继续运行一下exe

pyinstaller failed to execute script

没错,还是这个错误… …

看一下warn***.txt

pyinstaller failed to execute script

发现pyqt5已经成功导入了,说明之前的错误原因真是因为调用了python27pyinstaller,指定使用python36-32下的pyinstaller就没毛病了

这时候的warn***.txt是一大堆的看不懂的东西… …怎么办?

没关系,还有办法,使用-D指令,将这个exe弄成一个目录,然后使用命令行去运行新目录下的exe,然后你应该会看到报错误了

E:\Python\Python36-32\Scripts\pyinstaller.exe -D .\pachonggui.py

pyinstaller failed to execute script

这时候dist目录下会多一个目录pachonggui

pyinstaller failed to execute script

然后,在这里,我需要使用命令提示符去运行这个exe

pyinstaller failed to execute script

结果如下:

pyinstaller failed to execute script

… …PyQt5.sip是什么东东???我代码里面没有用到啊!!!~~~

在这种情况下,我决定,手动在代码里面加入它,然后再执行一次打包命令

pyinstaller failed to execute script

pyinstaller failed to execute script

不明白为什么提示sip not found还在,但是,这时候,exe已经可以运行,没有bug了