Python 在Heroku上,locale.getdefaultlocale()正在返回(None,None),破坏Django createsuperuser–;如何修复?
尝试执行heroku python manage.py 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])
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并选择创建超级用户时,在某些系统上也遇到了同样的错误。)
请注意,任何此类更改都会触发实例的重新启动