AttributeError: el objeto ‘módulo’ no tiene atributo ‘setdefaultencoding’

Intento instalar xadmin (es un plugin de django para usar el backoffice con el bootstrap de twitter). Pero cuando ejecuto mi proyecto, tengo el siguiente error en mi terminal de PyCharm:

File "C:\Python34\lib\site-packages\xadmin\sites.py", line 10, in  sys.setdefaultencoding("utf-8") AttributeError: 'module' object has no attribute 'setdefaultencoding' 

Este es el extracto del código fuente de sites.py en el complemento de xadmin:

 import sys from functools import update_wrapper from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.db.models.base import ModelBase from django.views.decorators.cache import never_cache from imp import reload reload(sys) sys.setdefaultencoding("utf-8") 

El proyecto se está ejecutando con el intérprete de Python 3.4 y Django 1.7.1. La versión de xadmin es 0.5.0

Que puedo hacer ?

Python 3 no tiene la función sys.setdefaultencoding() . reload(sys) no puede reload(sys) como lo puede hacer en Python 2 (lo que realmente no debería hacer en ningún caso).

Como el valor predeterminado en Python 3 ya es UTF-8, no tiene sentido dejar esas declaraciones en.

En Python 2, el uso de sys.setdefaultencoding() se usó para resolver problemas de encoding implícitos (causados ​​por concatenar cadenas de bytes y valores de Unicode y otras situaciones de tipo mixto), en lugar de solucionar los problemas en sí mismos. Python 3 eliminó la encoding y deencoding implícitas, por lo que usar el yeso para establecer una encoding diferente no haría ninguna diferencia de todos modos.

Sin embargo, si se trata de una biblioteca de terceros, es probable que tenga otros problemas, ya que claramente no se ha hecho compatible con Python 3.

Claramente, el proyecto xadmin es estrictamente Python-2. Puede parchear ese único archivo fácilmente, simplemente convierta las dos últimas líneas en

 if sys.version[0] == '2': reload(sys) sys.setdefaultencoding("utf-8") 

y enviar el pequeño parche a los mantenedores de xadmin . Sin embargo, es muy poco probable que este sea el único bit en el paquete que no sea compatible con Python 3; sin duda, se encontrará con otros más sutiles más adelante. Entonces, lo mejor es escribir a los mantenedores de xadmin preguntando cuáles son los planes para que sea compatible con Py 3 y cómo puede ayudar con la tarea.

No necesita codificar datos que ya están codificados en Python 3. Cuando intente hacerlo, Python intentará primero decodificarlo a Unicode antes de poder codificarlo de nuevo a UTF-8. Puedes eliminar o comentar esta statement de tu código

 sys.setdefaultencoding("utf-8")