一尘不染

AttributeError:'模块'对象没有属性'setdefaultencoding'

django

我尝试安装xadmin(这是django的插件,用于将backoffice与twitter的引导程序一起使用)。但是当我运行项目时,我的PyCharm终端出现以下错误:

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

这是xadmin插件中sites.py的源代码摘录:

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")

该项目使用python 3.4解释器和Django 1.7.1运行。xadmin的版本是0.5.0

我能做什么 ?


阅读 832

收藏
2020-04-01

共1个答案

一尘不染

Python 3没有sys.setdefaultencoding()功能。不能reload(sys)像在Python 2上那样恢复它(在任何情况下都不应该这样做)。

由于Python 3的默认设置已经是UTF-8 ,因此保留这些语句毫无意义。

在Python 2中,使用sys.setdefaultencoding()来解决隐式编码问题(由连接字节字符串和unicode值以及其他此类混合类型的情况引起),而不是解决问题本身。Python 3取消了隐式编码和解码,因此使用石膏设置不同的编码将毫无区别。

但是,如果这是一个第三方库,则可能会遇到其他问题,因为它显然尚未与Python 3兼容。

2020-04-01