¿Cómo establecer la encoding predeterminada en Python (la función setdefaultencoding () no existe)?

Posible duplicado:
¿Cambiar la encoding predeterminada de python?

Estoy leyendo inmersión en python y menciona la configuración del esquema de encoding predeterminado de python en el capítulo de análisis de XML.

El setdefaultencoding se usa en python-Installed dir / site-packages / pyanaconda / sitecustomize.py

import sys sys.setdefaultencoding('utf-8') 

Pero cuando ejecuto el script, se plantea:

 AttributeError: 'module' object has no attribute 'setdefaultencoding' 

¿Cómo configurar la encoding predeterminada, de todos modos?

Estoy usando python 2.7

Solución: encuentre el sitio.py en la instalación de python.

Editar la función setencoding

 def setencoding(): encoding = "ascii" if 0: import locale loc = locale.getdefaultlocale() if loc[1]: encoding = loc[1] if 0: #changes comes here, change 0 to 1 encoding = "undefined" #the encoding you want if encoding != "ascii": sys.setdefaultencoding(encoding) 

Estoy usando python 2.7

El módulo sys de Python ha tenido una función setdefaultencoding desde Python 2.0. Sin embargo,

Esta función solo está destinada a ser utilizada por la implementación del módulo del sitio y, cuando sea necesario, por sitecustomize. Una vez utilizado por el módulo del sitio, se elimina del espacio de nombres del módulo sys.

La documentación de al menos Python 2.1 indica que esto sucedió, por lo que nunca fue apropiado que PyAnaconda usara este método, y no estoy seguro de por qué funcionó.

¿Cómo configurar la encoding predeterminada, de todos modos?

Ejecute sys.setdefaultencoding en el archivo sitecustomize.py , que debe estar en sys.path (por ejemplo, lib / site-packages) cuando se inicie Python. Puede verificar el cambio con sys.getdefaultencoding .


Editar para downvoter anónimo:

Quien haya bajado esta respuesta, ¿le importaría explicarlo? Esta pregunta es solo para Python 2.x. No hay sys.setdefaultencoding en Python 3 si ese es tu problema. Mantengo mi explicación de cómo usar esta función si uno quiere en Python 2. No estaba defendiendo su uso ni recomendando su uso. Una biblioteca nunca debe tocarla, por lo que se elimina del espacio de nombres sys después de que site.py y sitecustomize.py tengan la oportunidad de llamarlo. Una biblioteca tampoco debe asumir nunca que la encoding predeterminada es ASCII en 2.x. Depende del sistema. Personalmente lo dejo como ASCII.