centos7运行python代码_记一次Centos7 环境下Python2.7事故

本文记录了一次在CentOS7环境下遇到的Python2.7 Unicode编码错误问题。错误出现在涉及非英文字符的print语句、字符串连接和文件路径中。尝试通过设置默认编码为utf-8无效,最终发现是因为系统缺少UTF-8语系。解决方案是在/etc/environment文件中添加LANG和LC_ALL环境变量,设置为en_US.utf-8,然后重新登录。对于仍然出现编码错误的代码,可以通过在中文字符串前添加'u'来解决。
摘要由CSDN通过智能技术生成

事故现象:python2.7下,脚本执行报错:UnicodeEncodeError: 'ascii' codec can't encode,代码中所有的print带有非英文的,或字符串连接+ 带有非英文的,或os.filepath文件路径中带有非英文的 都会出现这个字符编码错误

刚开始还以为是python问题,各种搜索,网上大部分都是在py文件顶部加:

import sys

reload(sys)

sys.setdefaultencoding( “utf-8” )

或是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

然一切做下来并没有什么卵用,直接在命令行中查看python的编码如下:

[root@vmi442840 ~]# python

Python 2.7.5 (default, Nov 16 2020, 22:23:17)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> sys.getdefaultencoding()

'ascii'

>>>

对,这就是python的默认编码方式ascii,不要尝试手贱去更改。

最后发现ssh登陆Centos7时有个提示:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

一查发现原因是没有utf-8这个语系(没添加语言_国名前缀),LC_ALL又没设定值。

解决办法:

在服务器的 /etc/environment 加入以下两行(此时查看这个environment文件竟然是个空文件),重新登陆即可:

LANG=en_US.utf-8

LC_ALL=en_US.utf-8

处理这个问题之后,再运行python的脚本,发现不报错了,但要是主动出现这样的代码: 也还是会报编码错误

print seoName + '这是个中文'

此时只需要在中文字符串之前加一个‘u’字符即可:

print seoName + u'这是个中文'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值