Android Tomcat java开发环境变量 软件测试工程师 Eclipse Netty makefile overflow ruby ipad canvas solr ios7 react视频教程 swift视频教程 jquery查找子元素 kafka默认端口 js字符串排序 js原生点击事件 汇编语言clr 小程序下拉刷新样式 python解析json数据 java新特性 java实战 java获取ip地址 java文件输入输出 js四舍五入 找茬辅助 pr滤镜插件 extjs视频教程 通讯录管理系统 pdf安装包官方下载 数组删除指定元素 数独软件 js切割字符串 拼多多商家下载 linux系统下载 天谕玲珑技能加点 夜之魇掉落 小程序图片上传
当前位置: 首页 > 学习教程  > python

Python3, pyinstaller: UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 解决方法

2021/2/7 9:55:11 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

python3.7 在使用pyinstaller打包程序的时候报了这个错&#xff1a; File "D:\Python_Anaconda\lib\site-packages\PyInstaller\hooks\hook-zmq.py", line 20, in <module>hiddenimports [zmq.utils.garbage] collect_submodules(zmq.backend)File "D:\…

python==3.7
在使用pyinstaller打包程序的时候报了这个错:

  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\hooks\hook-zmq.py", line 20, in <module>
    hiddenimports = ['zmq.utils.garbage'] + collect_submodules('zmq.backend')
  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 626, in collect_submodules
    repr(pkg_dir), package))
  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 85, in exec_statement
    return __exec_python_cmd(cmd)
  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\utils\hooks\__init__.py", line 74, in __exec_python_cmd
    txt = exec_python(*cmd, env=pp_env)
  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\compat.py", line 641, in exec_python
    return exec_command(*cmdargs, **kwargs)
  File "D:\Python_Anaconda\lib\site-packages\PyInstaller\compat.py", line 431, in exec_command
    out = out.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 116: invalid continuation byte

根据报错信息,可以找到库目录中compat.py文件的第431行(不同版本位置可能不同):

    if is_py3:
        try:
            if encoding:
                out = out.decode(encoding)  # 第431行
            else:
                # If no encoding is given, assume we're reading filenames from
                # stdout only because it's the common case.
                out = os.fsdecode(out)

之后参考StackOverflow上的一个方法,将“out = out.decode(encoding) ”改为:

out = out.decode(encoding, errors='ignore')

或改为:(未验证)

out = out.decode(encoding, "replace")

此外不要忘了在要打包的python代码文件开头注释编码格式:

# -*- coding : utf-8-*-

之后重新运行打包,问题解决

pyinstaller -F main.py

本文链接: http://www.dtmao.cc/news_show_2000201.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?