美文网首页常回来看看程序员
pyinstaller程序打包问题及解决方案

pyinstaller程序打包问题及解决方案

作者: 末一哟 | 来源:发表于2019-03-05 14:21 被阅读147次

    关于如何安装pyinstaller库,参看如何打包python为exe文件。这里我们提问题及解决方案。


    问题1:pandas库无法打包
    解决方案:建hook解决

    1.在../Pyinstaller/hooks目录下新建文件hook-pandas.py并写入内容

    hiddenimports = [
           #all your previous hidden imports
           'pandas' , 'pandas.libs.tslibs.timedeltas'
    ]
    

    说明:这里--hidden-import是程序需要的包,但是没有被打包进来。这里错误最多,当然不止pandas,但是这个pandas不改基本上必错,因为一般第三方库隐式调用其他包,然后打包出来的程序就显示Fate Error无法运行。也就是说你调用的第三方库(如pandas)他自己也调了其他库(numpy),但你自己程序里面没有调用numpy,那么就Error了。
    2.重新执行pyinstaller,问题解决
    (也可以不用此法,直接在pyinstaller命令中添加,具体命令如:

    pyinstaller -F test.py --hidden-import=pandas._libs.tslibs.timedeltas
    

    问题2:AttributeError:'str'object has no attribute 'items'
    解决方案:更新setuptools

    1.cmd下卸载该库

    pip uninstall setuptools
    

    2.cmd下安装该库最新版本

    pip install setuptools(默认最新)
    
    问题3:Cannot find existing PyQt5 plugin directories
    解决方案:可能是缺少依赖项,对其重新安装

    1.pip list查看已有的qt包
    2.如果没有,重新安装即可

    pip install pyqt5
    
    问题4:UnicodeDecodeError:'utf-8' code can't decode byte 0xXX in position XX'
    解决方案:chcp 65001

    1.在打包的命令行下,输入

    chcp 65001
    

    2.执行打包命令

    pyinstaller -F xxx.py
    

    说明:在中文windows系统中,如果一个文本文件是utf-8编码的,那么在cmd(DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或美国英语,即编码是中文字符集或者西文字符集。如果想正确显示UTF8字符,就必须使用chcp命令改变代码页,而utf8的代码页为65001。


    持续更新


    我们没能力发现知识,我们只是知识的寄生虫

    相关文章

      网友评论

        本文标题:pyinstaller程序打包问题及解决方案

        本文链接:https://www.haomeiwen.com/subject/lxgnuqtx.html