我尝试安装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")
该项目使用Python3.4解释器和Django1.7.1运行。xadmin的版本是0.5.0
我能做什么?
您不需要对已经在Python 3中编码的数据进行编码。当您尝试这样做时,Python将首先尝试将其解码为Unicode,然后再将其编码回UTF-8。 您可以从代码中删除或注释此语句
显然,
xadmin
项目严格来说是Python-2。你可以很容易地修补那一个文件,只要把最后两行变成把小补丁发给
xadmin
的维护者。不过,这不太可能是包中与Python3不兼容的仅位位——毫无疑问,稍后您将遇到更深入、更微妙的位。因此,最好的方法是编写xadmin
的维护人员,询问使Py 3兼容的计划是什么,以及如何帮助完成任务。Python 3没有
sys.setdefaultencoding()
函数。它不能像在Python 2上那样由reload(sys)
恢复(在任何情况下都不应该这样做)。由于Python 3的默认值是UTF-8已经,因此没有必要将这些语句留在中。
在Python 2中,使用
sys.setdefaultencoding()
是用来掩盖隐式编码问题(由字节字符串和unicode值的具体化以及其他这种混合类型的情况引起的),而不是修复问题本身。Python 3取消了隐式编码和解码,因此使用plaster设置不同的编码不会有任何区别。但是,如果这是一个第三方库,那么您可能会遇到其他问题,因为它显然与Python3不兼容。
相关问题 更多 >
编程相关推荐