打包
例子使用
pachonggui.py
正常执行一遍
pyinstaller -Fw pachonggui.py
给脚本加一行代码
import PyQt5.sip
然后再执行同样的命令
pyinstaller -Fw pachonggui.py
删掉
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
执行完毕,生成两个目录
exe
文件在dist
目录下
双击运行出现Failed to execute script pachonggui
错误
先去build
目录那里,找到warn***.txt
文件,里面会记录一些错误
这里可以看到,pyqt5
的库没有找到
分析:正常来说,如果pyinstaller
是pip3
安装好的,那么pyqt5
应该也在同一个目录下,应该不会出现找不到路径的情况.所以说,有两种情况,一个是pyinstaller
错了,一个是pyqt5
错了,这里我先指定pyqt5
的路径让它试试
找到python3的安装路径,我的是如下
然后使用--path
指定库目录,有一点需要注意:这里用的是/
作为目录分隔符,而不是\
pyinstaller.exe --path E:/Python/Python36-32/Lib/site-packages/PyQt5/Qt/bin -Fw .\pachonggui.
py
重新打包之后,再次运行,报同样的错误,看build
目录下的warn***.txt
文件,还是同样的,没有找到PyQt5
的库
因为本人安装了python2.7
和python3.6
,但是我只给python2.7配置了环境变量,所以说,命令行那里的pyinstaller
是python27
目录下的,而不是python36-32
目录下的,所以说,接下来,我命令提示符那里指定使用python36-32
下的pyinstaller
试试
执行打包命令之后,看到命令提示符,多了一些东西sip not found
,不管它先,先记下来,然后继续运行一下exe
没错,还是这个错误… …
看一下warn***.txt
发现pyqt5已经成功导入了,说明之前的错误原因真是因为调用了python27
的pyinstaller
,指定使用python36-32
下的pyinstaller
就没毛病了
这时候的warn***.txt
是一大堆的看不懂的东西… …怎么办?
没关系,还有办法,使用-D
指令,将这个exe弄成一个目录,然后使用命令行去运行新目录下的exe,然后你应该会看到报错误了
E:\Python\Python36-32\Scripts\pyinstaller.exe -D .\pachonggui.py
这时候dist
目录下会多一个目录pachonggui
然后,在这里,我需要使用命令提示符
去运行这个exe
结果如下:
… …PyQt5.sip
是什么东东???我代码里面没有用到啊!!!~
在这种情况下,我决定,手动在代码里面加入它,然后再执行一次打包命令
不明白为什么提示sip not found
还在,但是,这时候,exe已经可以运行,没有bug了