首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSX上的Python os.getenv (Django1.4)

OSX上的Python os.getenv (Django1.4)
EN

Stack Overflow用户
提问于 2012-03-27 16:52:20
回答 1查看 3.1K关注 0票数 7

我刚刚更新了一个环境到Django 1.4。在syncdb的第一次运行时,我得到以下错误:

代码语言:javascript
复制
TypeError: decode() argument 1 must be string, not None

此错误由django/contrib/auth/management/init触发

代码语言:javascript
复制
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命令行,并尝试:

代码语言:javascript
复制
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内部解决这个问题吗?欢迎小费

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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是通用安全的,但您可能有其他首选项。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9886178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档