尝试做一个 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 堆栈上返回 (None, None)。我如何设置语言环境以便 python 拾取它?
最佳答案
回答我自己的问题:事实证明这可以通过设置一个 heroku 配置变量来解决,这会导致 python 可以获取一个环境变量,它从 locale.getdefaultlocale() 返回可用的值。
在我的例子中,我使用的 heroku 设置是:
heroku config:add LANG=en_US.UTF-8
(当然,其他编码,尤其是语言值可能对其他人有意义。)
它解决了 createsuperuser 问题,到目前为止,其他一切都很好。 (其他报告建议用户执行 syncdb 并选择创建 super 用户,然后在某些系统上也会遇到同样的错误。)
请注意,任何此类更改都会触发您的实例重启。
关于python - 在 Heroku 上,locale.getdefaultlocale() 返回 (None, None),破坏了 Django createsuperuser——如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981065/