Python错误及其解决方法

标签: 无 分类: 未分类 创建时间:2022-01-04 13:46:40 更新时间:2024-11-15 10:49:43

1.Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000021280F1DDE0>, ‘Connection to pypi.tuna.tsinghua.edu.cn timed out. (connect timeout=15)’)’:

【解决】
主要就是网络不通造成的,可以使用清华源。解决方式主要是在c:\user\xxx(用户目录下,xxx是登录用户名,这个一定要)新建文件夹pip,里面有一个文件pip.ini,pip.ini的内容如下:(# trusted-host 此参数是为了避免麻烦,否则使用的时候可能会提示不受信任 #)

1
2
3
4
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

2.Glyph 21547 (\N{CJK UNIFIED IDEOGRAPH-542B}) missing from current font

主要是中文乱码的问题。

【解决方案】
1.查找matplotlib字体所在位置,即:/usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf。和缓存文件所做位置:/Users/bibichuan/.matplotlib。

1
2
3
4
5
6
import matplotlib

# 查找字体路径
print(matplotlib.matplotlib_fname())
# 查找字体缓存路径
print(matplotlib.get_cachedir())

2.网络上下载字体simhei.ttf,放到matplotlib的字体库中。

3.修改matplotlibrc文件

1
2
3
4
5
6
7
8
9
10
11
12
vim /usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc

# 去掉#
font.family: sans-serif
#font.style: normal
#font.variant: normal
#font.weight: normal
#font.stretch: normal
#font.size: 10.0

#font.serif: DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

4.清除缓存

1
rm -rf /Users/bibichuan/.matplotlib

5.重启命令行


6.注册临时字体
在当前文件夹下,新建fonts字体,然后放入SimHei.ttf字体文件,在程序代码前部加入注册字体动作。

1
2
3
4
from matplotlib import font_manager
## 注册字体
font_manager.fontManager.addfont('fonts/SimHei.ttf')
plt.rcParams["font.sans-serif"]="SimHei"
参考文章:
1.【Python基础】matplotlib字体设置看这一篇就够了
2.matplotlib中中文字体配置 1:利用matplotlib的字体管理工具font_manager—->缺点:每次必须要进行设置;2:更改matplotlib字体配置文件
3.pyinstaller 如何正确打包字体文件

3.段错误(核心已转储)

这个问题不知道到底哪里来的,我只能尝试去把到处都加上了 try except。这个问题最后我也没有解决,具体什么原因,反正就是多加几个 try ,可能就能搞定了。

参考文章:
【1】.段错误(核心已转储)(core dumped)问题的分析方法
【2】.Python3 如何定位错误:段错误 (核心已转储) Segmentation fault段错误:当访问的内存超出了系统所给程序的内存空间后,CPU就会产生相应的保护,从而出现段错误。core dumped 核心已转储:当程序运行过程中发生异常,程序异常退出时,操作系统会将当前程序的内存状况存储在core文件中,称之为核心已传储。(linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)
【3】.Python程序异常退出问题的解决与思考
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。