在collectstatic时,Django gettext错误

时间:2016-01-25 14:24:05

标签: django

我正在尝试在我的Ubuntu服务器中运行以下命令:

./manage.py collectstatic -v 0 --noinput

我收到此错误消息:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/core/management/__init__.py", line 327, in execute
    django.setup()
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/apps/registry.py", line 115, in populate
    app_config.ready()
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/admin/apps.py", line 22, in ready
    self.module.autodiscover()
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1129, in _exec
  File "<frozen importlib._bootstrap>", line 1471, in exec_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/admin.py", line 7, in <module>
    from django.contrib.auth.forms import (
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/forms.py", line 262, in <module>
    class SetPasswordForm(forms.Form):
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/forms.py", line 272, in SetPasswordForm
    help_text=password_validation.password_validators_help_text_html())
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/password_validation.py", line 85, in password_validators_help_text_html
    help_texts = password_validators_help_texts(password_validators)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/password_validation.py", line 76, in password_validators_help_texts
    help_texts.append(validator.get_help_text())
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/contrib/auth/password_validation.py", line 153, in get_help_text
    return _("Your password can't be too similar to your other personal information.")
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/__init__.py", line 85, in ugettext
    return _trans.ugettext(message)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 312, in gettext
    return do_translate(message, 'gettext')
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 295, in do_translate
    _default = _default or translation(settings.LANGUAGE_CODE)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 202, in translation
    _translations[language] = DjangoTranslation(language)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 115, in __init__
    self._add_local_translations()
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 163, in _add_local_translations
    translation = self._new_gnu_trans(localedir)
  File "/home/ubuntu/.virtualenvs/project/lib/python3.4/site-packages/django/utils/translation/trans_real.py", line 137, in _new_gnu_trans
    fallback=use_null_fallback)
  File "/usr/lib/python3.4/gettext.py", line 428, in translation
    t = _translations.setdefault(key, class_(fp))
  File "/usr/lib/python3.4/gettext.py", line 162, in __init__
    self._parse(fp)
  File "/usr/lib/python3.4/gettext.py", line 241, in _parse
    magic = unpack('<I', buf[:4])[0]
struct.error: unpack requires a bytes object of length 4

它可能是什么?这个错误似乎很无关。

1 个答案:

答案 0 :(得分:6)

好像你有一个空的django.mo文件(.mo文件是包含翻译的文件)。考虑删除它,或重新创建它或重新安装Django。

我想通了,因为:

  1. gettext;
  2. 引发了这个问题
  3. 在文件的parsing the header期间引发了异常;和
  4. 异常是关于一个太短的字节串(可能是空的)。