pyinstaller打包遇到的坑

打包

例子使用pachonggui.py

  1. 正常执行一遍

     pyinstaller -Fw pachonggui.py
  2. 给脚本加一行代码

     import PyQt5.sip

    然后再执行同样的命令

     pyinstaller -Fw pachonggui.py
  3. 删掉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的库没有找到

分析:正常来说,如果pyinstallerpip3安装好的,那么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.7python3.6,但是我只给python2.7配置了环境变量,所以说,命令行那里的pyinstallerpython27目录下的,而不是python36-32目录下的,所以说,接下来,我命令提示符那里指定使用python36-32下的pyinstaller试试

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

没错,还是这个错误… …

看一下warn***.txt

发现pyqt5已经成功导入了,说明之前的错误原因真是因为调用了python27pyinstaller,指定使用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了


   转载规则


《pyinstaller打包遇到的坑》 冯文华 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
python调用通知中心 python调用通知中心
mac mac参考: https://stackoverflow.com/questions/17651017/python-post-osx-notification/41318195#41318195 法一:安装terminal-no
2018-11-30
下一篇 
Kali配置 Kali配置
系统安装 据博主亲测,Kali从2018年版本开始,再用UltraISO之类的软件制作U盘启动盘来装Kali系统,都会出现下图的问题,百度和google上有很多解决方案,然并卵. 今天偶然发现了一款U盘制作软件—Rufus,可以去官网
2018-11-15
  目录