python进入报错_Python常见报错 - 运维笔记

本文介绍了在遇到Python报错'ascii' codec can't encode character时的解决方案,通过创建sitecustomize.py文件设置默认编码为utf8。同时,针对pip安装包时出现的重试错误,提出了添加国内pip源的方法来解决问题。
摘要由CSDN通过智能技术生成

一、"ascii' codec can't encode character"

之前部署了openstack虚拟化环境,有一天在使用nova list查看虚拟机的时候,突然报错!如下:

[root@linux-node1 src]# nova list

ERROR (UnicodeEncodeError): 'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。查阅网上,可以在程序中修改所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告。

下面介绍一个一次性修改后永久生效的方法:

在python的lib/site-packages文件夹下新建一个sitecustomize.py

[root@linux-node1 nova]# find / -name site-packages

/usr/lib/python2.7/site-packages

/usr/lib64/python2.7/site-packages

[root@linux-node1 nova]# cd /usr/lib/python2.7/site-packages/

[root@linux-node1 site-packages]# cat sitecustomize.py #添加如下内容,设置编码为utf8

# encoding=utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

[root@linux-node1 nova]# python #终端进入python,即是重启python解释器!可以多次进入

Python 2.7.5 (default, Aug 18 2016, 15:58:25)

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

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

>>>

接着,再次使用nova list命令,就没有那个报错了!

[root@linux-node1 src]# nova list

+--------------------------------------+----------------------------+--------+-------------+-------------+--------------------+

| ID | Name | Status | Task State | Power State | Networks |

+--------------------------------------+----------------------------+--------+-------------+-------------+--------------------+

| b6a4738d-7e01-4068-a09b-7008b612d126 | beta-new1(beta环境1) | ACTIVE | - | Running | flat=192.168.1.151 |

| 9acdb28b-02c2-41bb-87c4-5f3a8fa008ab | dev-new-test1(测试环境1) | ACTIVE | - | Running | flat=192.168.1.150 |

| 30e5ba3e-3942-4119-9ba6-7523cf865b6f | kvm-server003 | ACTIVE | - | Running | flat=192.168.1.152 |

| a2893208-3ec9-4606-ab82-d7a870206cb9 | kvm-server004 | ACTIVE | - | Running | flat=192.168.1.153 |

| 3483d9f1-4015-48d9-9837-b67ca82dd54d | kvm-server005 | ACTIVE | - | Running | flat=192.168.1.154 |

+--------------------------------------+----------------------------+--------+------------+-------------+--------------------+

############################################################################

注意:上面是python7环境下的报错解决方案,如果换成python6会怎么解决呢?

如果是python6环境报这个错误,则/usr/lib/python2.6/site-packages下是没有这个sitecustomize.py文件的。

那么这个时候就要看具体的报错文件了,在该文件的代码开头处添加如下代码:

import sys

reload(sys)

sys.setdefaultencoding('utf8')

比如,在jumpserver界面里推送系统用户的时候报错:

ERROR (UnicodeEncodeError): 'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)

从报错界面里找出错误所在的文件是/data/jumpserver/jperm/ansible_api.py

则解决办法:

[root@jumpserver01 ~]# cp /data/jumpserver/jperm/ansible_api.py /data/jumpserver/jperm/ansible_api.py.bak

[root@jumpserver01 ~]# vim /data/jumpserver/jperm/ansible_api.py

# -*- coding: utf-8 -*-

import sys #也就是在该文件代码开头添加这三行内容

reload(sys)

sys.setdefaultencoding('utf8')

然后再在jumpserver界面里进行系统用户推送操作,就不会报这个错误了!

二、pip安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))

# pip install pymysql

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError

(': Failed to establish a new connection: [WinError 10061]

由于目标计算机积极拒绝,无法连接。')': /simple/pylint/

解决办法:添加国内pip源的url地址

# pip install pymysql -i url

目前国内比较靠谱常用的几个pip源

阿里云 http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣(douban) http://pypi.douban.com/simple/

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

例如安装pymysql,则命令如下:

# pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/

### 回答1: Python运维笔记md文档是一个以Markdown格式编写的文档,用于记录Python运维工作中的经验、问题和解决方案。 在该文档中,可以记录各种Python运维相关的内容,比如常见运维任务、常用的Python库和工具、部署和维护技巧等等。通过整理和记录这些信息,可以方便自己和他人查阅和参考,提高工作效率和技术水平。 该文档可以分为不同的章节和目录,以便组织和查找信息。每个章节可以包含多个子章节,每个子章节可以包含多个文档段落。每个文档段落可以包含标题、正文、代码示例等内容。 在Python运维笔记md文档中,可以记录一些常见运维任务,比如集群管理、日志处理、性能优化等。对于每个任务,可以记录该任务的目标、实现方法、相关代码和注意事项等。这样,在遇到类似的任务时,可以很快地查阅相关信息,缩短解决问题的时间。 此外,Python运维笔记md文档还可以记录一些常用的Python库和工具,比如Fabric、Ansible、Docker等。对于每个库或工具,可以记录其主要功能、安装配置方法、使用示例等。这样,在实际工作中,可以根据需要选择合适的库和工具,提高工作效率。 总之,Python运维笔记md文档是一个记录Python运维工作经验和解决方案的重要工具。通过不断地整理和更新这个文档,可以提高自己的技术水平,也可以为他人提供有价值的参考资料。 ### 回答2: Python运维笔记MD文档是一种记录和整理与Python运维相关资料和经验的文件格式。MD是指Markdown,一种轻量级标记语言,可用于快速编写格式化的文档。 Python运维笔记MD文档通常包含以下内容: 1. 环境搭建:记录如何安装Python解释器、依赖包和开发环境,以及如何配置开发环境和调试工具等。 2. 常用命令和技巧:记录Python运维常用的命令和技巧,包括文件操作、目录管理、进程控制、日志查看等。通过整理这些命令和技巧,可以帮助Python运维人员更加高效地进行工作。 3. 脚本开发:记录Python脚本的开发经验和技巧,包括如何编写高效的代码、处理异常、读写文件、数据库操作、网络编程等。这部分内容可以提供Python运维人员开发工具和脚本的参考和指导。 4. 故障排除和优化:记录Python运维常见的故障排除和性能优化方法,包括如何定位和解决内存泄漏、死锁、性能瓶颈等问题。这部分内容可以提供Python运维人员在故障处理和性能优化方面的指导和支持。 5. 监控和告警:记录Python运维中常用的监控和告警工具,包括如何配置监控项、设置告警规则、收集指标数据等。这部分内容可以帮助Python运维人员建立可靠的监控和告警系统,及时发现和解决问题。 通过Python运维笔记MD文档的整理和使用,可以帮助Python运维人员更好地管理和维护Python环境和应用程序,提高工作效率和质量。它不仅是个人学习和积累的重要工具,也可以作为团队交流和协作的参考资料,促进知识共享和团队合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值