工作BUG记录

1.使用with open(local_file, ‘wb’) as fb下载文件时无法创建本地新文件,并报错No such file or directory:****,且wb提示“Expected type ‘bool’, got ‘str’ instead”

原因:导入库时使用了from openpyxl import *,openpyxl是默认文件存在的

from openpyxl import *
with open(localpath, 'wb') as fp:
       ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)
       ftp.set_debuglevel(0)
就会报错:No such file or directory,且wb会提示Expected type 'bool

在这里插入图片描述
将from openpyxl import *修改为from openpyxl import load_workbook,一切正常

from openpyxl import load_workbook
with open(localpath, 'wb') as fp:
    ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)
    ftp.set_debuglevel(0)
可以正常下载

2.推理时报错:ImportError: cannot import name ‘OrderedDict’ from ‘typing’ (C:\ProgramData\anaconda3\envs\th37\lib\typing.py)报错图片

原因:在python3.7.0中,typing模块中没有OrderedDict,但是在python3.7.4中,typing模块中包含OrderedDict,可以直接通过 from typing import OrderedDict 命令导入,本人时python 3.7所以报错
解决方法:python3.8版本及以下,都可以通过安装typing_extensions来解决问题,说它相当于是对typing的一个补丁文件,里面会增加一些typing里面没有的东西,通过pip 安装typing_extensions:pip3 install typing_extensions ,然后打开报错的文件,不从typing中导入OrderedDict模块,而是从typing_extensions中导入OrderedDict模块在这里插入图片描述
修改为,运行即可解决问题
在这里插入图片描述
3.训练时报错:OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized
:原因 调用matplotlib存在两个libiomp5md.dll,一个是在anaconda3路径下“C:\ProgramData\anaconda3\Library\bin”,一个是在虚拟环境路径下,将虚拟环境路径下的libiomp5md.dll改为libiomp5md1.dll即可
参考:https://blog.youkuaiyun.com/Victor_X/article/details/110082033

3.打开PowerShell报错 UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u202a’ in position 1345: illegal multibyte sequence,print(activator.execute(), end=“”),修改编码格式均无用

在这里插入图片描述

原因:编码格式错误,但是我修改了powerSheel的的编码格式还是异常,可能时print函数出现问题
解决方案:
1.文件顶部引入 io

import io

2。在报错的,print(activator.execute(), end=“”)前面添加

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')

修改后代码如下

def main_sourced(shell, *args, **kwargs):
    """Entrypoint for the "sourced" invocation of CLI interface. E.g. `conda activate`."""
    shell = shell.replace("shell.", "", 1)

    # This is called any way later in conda.activate, so no point in removing it
    from ..base.context import context

    context.__init__()
    init_loggers()

    from ..activate import _build_activator_cls

    try:
        activator_cls = _build_activator_cls(shell)
    except KeyError:
        from ..exceptions import CondaError

        raise CondaError("%s is not a supported shell." % shell)
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
    activator = activator_cls(args)
    print(activator.execute(), end="")
    return 0

4.但是sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding=‘gb18030’) 会将全局的python输出格式修改为gb18030
,为了防止其他地方出错,我这里在这段代码之后将输出格式还原,即在print(activator.execute(), end=“”) 前后分别添加

original_stdout = sys.stdout  #获取系统原来输出格式
sys.stdout = original_stdout#宦官输出格式

完成代码如下

def main_sourced(shell, *args, **kwargs):
    """Entrypoint for the "sourced" invocation of CLI interface. E.g. `conda activate`."""
    shell = shell.replace("shell.", "", 1)

    # This is called any way later in conda.activate, so no point in removing it
    from ..base.context import context

    context.__init__()
    init_loggers()

    from ..activate import _build_activator_cls

    try:
        activator_cls = _build_activator_cls(shell)
    except KeyError:
        from ..exceptions import CondaError

        raise CondaError("%s is not a supported shell." % shell)
    original_stdout = sys.stdout
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
    activator = activator_cls(args)
    print(activator.execute(), end="")
    sys.stdout = original_stdout
    return 0

4.保存即可解决
参考:https://blog.youkuaiyun.com/m0_66681776/article/details/136538954

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值