Python 在Heroku上,locale.getdefaultlocale()正在返回(None,None),破坏Django createsuperuser–;如何修复?

Python 在Heroku上,locale.getdefaultlocale()正在返回(None,None),破坏Django createsuperuser–;如何修复?,python,django,heroku,Python,Django,Heroku,尝试执行heroku python manage.py createsuperuser时,出现了一个错误,结果大致如下: File "/usr/local/www/site-python/lib/django-trunk/django/contrib/auth/management/__init__.py", line 85, in get_system_username return getpass.getuser().decode(locale.getdefaultlocale()[1])

尝试执行heroku python manage.py createsuperuser时,出现了一个错误,结果大致如下:

File "/usr/local/www/site-python/lib/django-trunk/django/contrib/auth/management/__init__.py", line 85, in get_system_username
 return getpass.getuser().decode(locale.getdefaultlocale()[1])
TypeError: decode() argument 1 must be string, not None

输入shell确认:locale.getdefaultlocale()在我的Heroku Cedar堆栈上返回(无,无)。如何设置区域设置,使python能够选择它

回答我自己的问题:事实证明,这可以通过设置heroku配置变量来解决,这将导致python可以获取一个环境变量,该变量从locale.getdefaultlocale()返回可用值

在我的例子中,我使用的heroku设置是:

heroku config:add LANG=en_US.UTF-8
(当然,其他编码,尤其是语言值可能对其他人有意义。)

它修复了createsuperuser的问题,到目前为止在其他方面都很好。(其他报告显示,用户在执行syncdb并选择创建超级用户时,在某些系统上也遇到了同样的错误。)

请注意,任何此类更改都会触发实例的重新启动