我刚刚更新了一个环境到Django 1.4。在syncdb的第一次运行时,我得到以下错误:
TypeError: decode() argument 1 must be string, not None此错误由django/contrib/auth/management/init触发
try:
return getpass.getuser().decode(locale.getdefaultlocale()[1])
except (ImportError, KeyError, UnicodeDecodeError):
# KeyError will be raised by os.getpwuid() (called by getuser())
# if there is no corresponding entry in the /etc/passwd file
# (a very restricted chroot environment, for example).
# UnicodeDecodeError - preventive treatment for non-latin Windows.
return u''getdefaultlocale返回None
在阅读了this Django ticket后,我尝试了非官方的补丁,它是有效的,但我认为我可以做得更好,通过弄清楚发生了什么。
所以我打开了一个python命令行,并尝试:
import os
print os.getenv()
None
os.getenv.__doc__
"Get an environment variable, return None if it doesn't exist.\n The optional second argument can specify an alternate default."我能在OSX内部解决这个问题吗?欢迎小费
发布于 2012-03-27 17:03:12
假设您使用bash作为shell,那么这个问题的直接解决方案是:
$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
这将为该会话设置您的区域设置,并且syncdb将工作。您可以将其添加到您的配置文件中,并使其对您的shell永久生效。
您可以使用locale命令查看当前设置,使用locale -a查看可用的区域设置。en_US.UTF-8是通用安全的,但您可能有其他首选项。
https://stackoverflow.com/questions/9886178
复制相似问题