我尝试安装xadmin (这是django的插件,用于后台和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解释器和Django 1.7.1运行。xadmin的版本是0.5.0
我能做些什么?
发布于 2015-01-24 08:22:23
Python3没有sys.setdefaultencoding()
函数。reload(sys)
不能像在Python2上那样恢复它(在任何情况下都不应该这样做)。
由于Python3的默认设置是UTF-8 已经是,所以没有必要将这些语句保留在其中。
在Python2中,使用sys.setdefaultencoding()
来消除隐式编码问题(由串接字节字符串和unicode值以及其他这样的混合类型情况引起),而不是解决问题本身。Python3取消了隐式编码和解码,所以使用did设置不同的编码也没有什么区别。
但是,如果这是一个第三方库,那么您可能会遇到其他问题,因为它显然与Python 3不兼容。
发布于 2015-01-24 08:32:33
显然,xadmin
项目严格地是Python-2。您可以轻松地修补该文件,只需将最后两行转换为
if sys.version[0] == '2':
reload(sys)
sys.setdefaultencoding("utf-8")
并将这个小补丁发送给xadmin
的维护人员。但是,这不太可能是与Python3不兼容的包中只有的位--毫无疑问,稍后您会遇到更深入、更精细的位。因此,最好是编写xadmin
的维护人员,询问使其与Py 3兼容的计划是什么,以及如何帮助w/任务。
发布于 2018-04-14 11:20:40
您不需要对已经用Python 3编码的数据进行编码。当您尝试这样做时,Python将首先尝试将其解码为Unicode,然后才能将其编码回UTF-8。您可以从代码中删除或注释此语句。
sys.setdefaultencoding("utf-8")
https://stackoverflow.com/questions/28127513
复制相似问题