腾讯云轻量服务器使用mysqldump导出数据 导致进程被杀
只能说任何数据库都不能随意放在轻量服务器,io读写太差了。
稍微密集一点,直接被杀掉。
在方面放mysql服务,简直就是煞笔行为。
稍微密集一点,直接被杀掉。
在方面放mysql服务,简直就是煞笔行为。
centos yum安装mysql client 客户端
centos7 下使用yum下找不到mysql客户端的rpm包了,
这时需要从官网下载
1.安装rpm源
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2.安装客户端
#可以通过yum搜索
#若是64位的话直接安装
结果报错
报以下密钥错误:
则先执行以下命令再安装:
操作:
连到数据库:mysql -h 数据库地址 -u数据库用户名 -p数据库密码 -D 数据库名称
mysql -h 88.88.19.252 -utravelplat -pHdkj1234 -D etravel
数据库导出(表结构):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 -d 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 -d etravel > db20190713.sql
数据库导出(表结构 + 表数据):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel > db20190713.sql
数据库表导出(表结构 + 表数据):
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel doc > doc.sql
导入到数据库:source 文件名.sql
source db20190713.sql
收起阅读 »
这时需要从官网下载
1.安装rpm源
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2.安装客户端
#可以通过yum搜索
yum search mysql
#若是64位的话直接安装
yum install mysql-community-client.x86_64
结果报错
报以下密钥错误:
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
则先执行以下命令再安装:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022然后重新安装 yum install mysql-community-client.x86_64
wget -q -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022|yum install
操作:
连到数据库:mysql -h 数据库地址 -u数据库用户名 -p数据库密码 -D 数据库名称
mysql -h 88.88.19.252 -utravelplat -pHdkj1234 -D etravel
数据库导出(表结构):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 -d 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 -d etravel > db20190713.sql
数据库导出(表结构 + 表数据):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel > db20190713.sql
数据库表导出(表结构 + 表数据):
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel doc > doc.sql
导入到数据库:source 文件名.sql
source db20190713.sql
收起阅读 »
ubuntu的Shotwell 图片处理,居然连图片大小调整的功能都没有
有点无语,平时用得最多的功能,居然没有。

只好用用中的photogimg(号称ubuntu下的photoshop)

只好用用中的photogimg(号称ubuntu下的photoshop)
禁止google浏览器http链接强制跳转为https ->网上的根本都是无效的方法
在Chrome浏览器地址栏中输入chrome://net-internals/,打开HSTS标签,在Add domain里的Domain输入要添加的域名地址(不带http的地址),点Add即可。 其中Include subdomains选项还可以添加子域名,保证所有子域名都使用HTTPS访问。
一般在网上的都是按照上面的方法操作,不过实际弄下来,发现根本无法组织chrome自动调转的https。
主要这个网站的主域名是https的,而他的二级域名是http的,用http的二级域名访问是,总是调转到https的页面(首页)。
最后无奈,只好用firefox来浏览这个http的页面。
郁闷ing。。 收起阅读 »
docker访问外部主机的ip
假如在linux里面安装了一个docker,然后linux做了一个http接口,端口为80.
那么假如我部署了一个nginx容器在docker里面,那么我的nginx要如何反向代理到我的linux主机的80端口呢?
那么我们测试一下,加入nginx容器的名字为ng110,那么我们通过命令docker exec -it ng110 /bin/bash
进入容器内部。
然后我们尝试curl获取主机的80端口。
首先,curl http://127.0.0.1/
这样子是不通的,因为127.0.0.1是docker内部的回环地址。并不是外部linux的ip。
那么我们先在linux外部,运行命令:ifconfig

这里有一个docker的的字样的ip地址。 那么这个地址就是在docker看来的外部ip地址。
然后我们继续回到docker容器里面,curl http://172.17.0.1/
结果我们发现有返回数据了。
所以在外面的ifconfig的docker容器地址,就是主机相对容器的ip地址。
所以我的nginx配置文件应该这么写:

proxy_pass http://172.17.0.1:80 收起阅读 »
那么假如我部署了一个nginx容器在docker里面,那么我的nginx要如何反向代理到我的linux主机的80端口呢?
那么我们测试一下,加入nginx容器的名字为ng110,那么我们通过命令docker exec -it ng110 /bin/bash
进入容器内部。
然后我们尝试curl获取主机的80端口。
首先,curl http://127.0.0.1/
这样子是不通的,因为127.0.0.1是docker内部的回环地址。并不是外部linux的ip。
那么我们先在linux外部,运行命令:ifconfig

这里有一个docker的的字样的ip地址。 那么这个地址就是在docker看来的外部ip地址。
然后我们继续回到docker容器里面,curl http://172.17.0.1/
结果我们发现有返回数据了。
所以在外面的ifconfig的docker容器地址,就是主机相对容器的ip地址。
所以我的nginx配置文件应该这么写:

proxy_pass http://172.17.0.1:80 收起阅读 »
集思录这个站点的技术人员挺菜的,连cdn都不用

用稍微大点的ddos攻击下,就容易瘫痪大了的。。。。。。。
心真大。
csdn自定义域名居然都要收费,而且......
而且还不便宜呀
正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。

正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。

有道云笔记7.0版本太卡了

只要打开有道云笔记,立马超越chrome成为内存大户。
笔记本cpu风扇瞬间转起来。
python对视频添加水印 调整帧率
Python调用ffmpeg开源视频处理库,来实现视频批量的处理:水印、背景音乐、剪辑、合并、帧率、速率、分辨率等操作
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。 它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。 这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。 许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。 项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
PS:需要电脑把ffmpeg的可执行文件放到环境变量中 收起阅读 »
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。 它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。 这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。 许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。 项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
# coding=utf-8
import os
import subprocess
import datetime
import json, pprint
import re, time
import threading
import random
import shutil
class FFmpeg:
def __init__(self, editvdo, addlogo=None, addmusic=None,
addvdohead=None, addvdotail=None):
self.editvdo = editvdo
self.addlogo = addlogo
self.addmusic = addmusic
self.addvdohead = addvdohead
self.addvdotail = addvdotail
self.vdo_time, self.vdo_width, self.vdo_height, self.attr_dict = self.get_attr()
self.editvdo_path = os.path.dirname(editvdo)
self.editvdo_name = os.path.basename(editvdo)
def get_attr(self):
"""
获取视频属性参数
:return:
"""
strcmd = r'ffprobe -print_format json -show_streams -i "{}"'.format(self.editvdo)
status, output = subprocess.getstatusoutput(strcmd)
agrs = eval(re.search('{.*}', output, re.S).group().replace("\n", "").replace(" ", ''))
streams = agrs.get('streams', )
agrs_dict = dict()
[agrs_dict.update(x) for x in streams]
vdo_time = agrs_dict.get('duration')
vdo_width = agrs_dict.get('width')
vdo_height = agrs_dict.get('height')
attr = (vdo_time, vdo_width, vdo_height, agrs_dict)
return attr
def edit_head(self, start_time, end_time, deposit=None):
"""
截取指定长度视频
:param second: 去除开始的多少秒
:param deposit: 另存为文件
:return: True/Flase
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_head'+self.editvdo_name
start = time.strftime('%H:%M:%S', time.gmtime(start_time))
end = time.strftime('%H:%M:%S', time.gmtime(end_time))
strcmd = 'ffmpeg -i "{}" -vcodec copy -acodec copy -ss {} -to {} "{}" -y'.format(
self.editvdo, start, end, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_logo(self, deposit=None):
"""
添加水印
:param deposit:添加水印后另存为路径,为空则覆盖
:return: True/False
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_logo'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -vf "movie=\'{}\' [watermark];[in] ' \
r'[watermark] overlay=main_w-overlay_w-10:10 [out]" "{}"'.format(
self.editvdo, self.addlogo, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_music(self, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -y -i "{}" -i "{}" -filter_complex "[0:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,' \
r'pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]" ' \
r'-map "[a]" -map 0:v -c:v libx264 -c:a aac ' \
r'-strict -2 -ac 2 "{}"'.format(self.editvdo, self.addmusic, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_rate(self, rete=30, deposit=None):
"""
改变帧率
:param rete: 修改大小帧率
:param deposit: 修改后保存路径
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -r {} "{}"' % (self.editvdo, rete, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_power(self, power='1280x720', deposit=None):
"""
修改分辨率
:param power: 分辨率
:param deposit: 修改后保存路径,为空则覆盖
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_power'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -s {} "{}"'.format(self.editvdo, power, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def rdit_marge(self, vdo_head, vdo_tail, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'rdit_marge'+self.editvdo_name
with open(self.editvdo_path+'/'+'rdit_marge.txt', 'w', encoding='utf-8') as f:
f.write("file '{}' \nfile '{}' \nfile '{}'" .format(
vdo_head, self.editvdo, vdo_tail))
strcmd = r'ffmpeg -f concat -safe 0 -i "{}" -c copy "{}"'.format(
self.editvdo_path + '/' + 'rdit_marge.txt', deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
# ffmpeg - i input.mkv - filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" - map"[v]" - map"[a]" output.mkv
test = FFmpeg(r"D:\vdio\4.mp4")
PS:需要电脑把ffmpeg的可执行文件放到环境变量中 收起阅读 »
wp super cache缓存文件在哪里?
wordpress_cn/wp-content/cache/supercache/xxxx.com (最后一个为你的域名)
里面的静态文件是html后缀结尾的。

如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
为什么?
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
而html文件默认是被cdn缓存起来的。
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。 收起阅读 »
里面的静态文件是html后缀结尾的。

如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
为什么?
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
而html文件默认是被cdn缓存起来的。
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。 收起阅读 »
typora 复制公众号文章时图片无法正确上传到图床
正常使用typora的时候,复制网页的内容,可以直接把远程的图片也顺带抓下来,同时上传到诸如七牛,腾讯cos的服务器。
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
以至于上传的图片都是同一张。
那么如何解决这个问题呢?
我们可以绕道。
先用有道云笔记保存公众号的文章。
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
然后右键,导出word。 对,有道云笔记这个功能。
然后打开保存的word文件,全选,复制里面的内容,包含图片。
然后ctrl+v 粘贴到typora。
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
收起阅读 »
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
以至于上传的图片都是同一张。
那么如何解决这个问题呢?
我们可以绕道。
先用有道云笔记保存公众号的文章。
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
然后右键,导出word。 对,有道云笔记这个功能。
然后打开保存的word文件,全选,复制里面的内容,包含图片。
然后ctrl+v 粘贴到typora。
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
收起阅读 »
腾讯云添加cdn加速后 域名加上www无法访问
比如 原来网址 为 30daydo.com, 没有使用cdn加速之前,在浏览器输入 30daydo.com 或者 www.30daydo.com 都可以正常访问。
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
解决方法:
www的域名访问 也要加入一个cdn加速记录。
如下图所示:

添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。

类型要填写CNAME,不能填A哦。
然后过大概十来分钟才能生效。并不是马上就生效的哦。
收起阅读 »
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
解决方法:
www的域名访问 也要加入一个cdn加速记录。
如下图所示:

添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。

类型要填写CNAME,不能填A哦。
然后过大概十来分钟才能生效。并不是马上就生效的哦。
收起阅读 »
网易的云笔记新版出linux版本了
果然是良心企业。

七牛云的图片图床配置到腾讯云域名解析
官网的链接:
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义

这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
收起阅读 »
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义

这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
收起阅读 »
docker nginx+php部署的wordpress,安装插件不需要ftp账号
使用docker搭建的每一个组件,php,nginx,mysql,弄得wordpress站点。
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www

不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码, 收起阅读 »
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码, 收起阅读 »
1核2G的服务器 docker跑wordpress真够吃力
性能太烂,预览个主题要等几分钟,甚至无响应。。。。
现在的wordpress加的内容可真多
现在的wordpress加的内容可真多
python3 安装demjson 报错 use_2to3 is invalid
ooking in indexes: https://pypi.douban.com/simple
Collecting demjson==2.2.4
Downloading https://pypi.doubanio.com/pack ... ar.gz (131 kB)
|████████████████████████████████| 131 kB 985 kB/s
ERROR: Command errored out with exit status 1:
command: /root/miniconda3/envs/py37/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-7ve4tu87
cwd: /tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/
Complete output (3 lines):
/root/miniconda3/envs/py37/lib/python3.7/site-packages/setuptools/dist.py:760: UserWarning: Usage of dash-separated 'index-url' will not be supported in future versions. Please use the underscore name 'index_url' instead
% (opt, underscore_opt)
error in demjson setup command: use_2to3 is invalid.
记录一下解决办法:
setuptools 降级:
pip install --upgrade setuptools==57.5.0
然后再pip install demjson 即可
如果担心setuptools 修改到系统的其他库,可以创建一个虚拟环境。
然后在虚拟环境里面对setuptools 降级,再安装demjson
来个养眼图:

一些个人博客wordpress的内容需要用户扫码关注才可以阅读

这种体验差的一批。
是什么迷之自信让这些作者对自己写的内容如此敝帚自珍?
看到这样的站点,1s都不想停留,直接关闭了。
centos/ubuntu linux 下 python matplotlib 绘图中文标题乱码 解决
出现下图的错误:
测试代码:
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttf
更新缓存
注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
然后接下来这一步,很重要。
清理缓存,不然不会生效!!!!
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/
下面
然后运行程序,搞定~
公众号:可转债量化分析

后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。 收起阅读 »
测试代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import rcParams
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
plt.title(r'宋体 Times New Roman')
plt.axis('off')
plt.savefig('usestix.png')
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttf
cd /usr/share/fonts/
sudo mkdir chinese
sudo cp simhei.ttf /usr/share/fonts/chinese/
sudo chmod -R 755 /usr/share/fonts/chinese
更新缓存
mkfontscale
mkfontdir
fc-cache
注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
然后接下来这一步,很重要。
清理缓存,不然不会生效!!!!
rm -rf ~/.cache/matplotlib
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/
下面
然后运行程序,搞定~
公众号:可转债量化分析

后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。 收起阅读 »