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