解决python3打印中文报错UnicodeEncodeError以及pm2启动python3项目的问题

两个问题,相互没多大关系,但是遇到了,一起记录一下

python3打印中文报错UnicodeEncodeError:毫无疑问编码的问题。网上的方法都大概试了试
其中
1. sys reload()python3已经不支持,使用了也会报错。
2. PYTHONIOENCODING=utf-8 python your_script.py有效但是可以用来调试,但是项目后台启动没法用,还有其他的加声明的试了都无效。

原因:是Linux默认编码是ANSI_X3.4-1968的问题。

解决方式:

方法一:在python代码中更改sys.stdout

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

方法二:修改系统环境变量

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

我用的第二种,完美解决


第二个问题,pm2启动python3的问题。pm2是什么不做过多介绍了,通常用来启动nodejs项目,但是他的功能不仅仅如此,比如我们可以用来启动python项目。
但是,默认pm2 start xxx.py会调用系统命令python,所以调用的是系统自带的python2.7,那怎么通过python3来启动python项目呢。

pm2启动有一个参数--interpreter可以指定解释器。那么我们就可以用这样的命令来启动:

pm2 start xxx.py --interpreter python3

ok,完美解决。

未经允许不得转载:莫小奈博客 » 解决python3打印中文报错UnicodeEncodeError以及pm2启动python3项目的问题

评论 1

评论前必须登录!

登陆 注册
  1. 百约不得姐为啥我又来,因为这里百看不厌!