django-admin.py makemessages 失败

4 投票
3 回答
3469 浏览
提问于 2025-05-01 15:47

我之前用 django-admin.py makemessages -a 创建了语言文件。

但是过了一段时间后,我尝试创建 *.po 文件时都失败了,出现了以下错误:

django-admin.py makemessages  -v 3 -a
examining files with the extensions: .html and .txt
Traceback (most recent call last):
  File "/usr/local/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py",         line 385, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line     377, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line    288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 533, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemessages.py", line 283, in handle_noargs
potfiles = self.build_potfiles()
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemessages.py", line 299, in build_potfiles
file_list = self.find_files(".")
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemessages.py", line 358, in find_files
ignored_roots = [os.path.normpath(p) for p in (settings.MEDIA_ROOT, settings.STATIC_ROOT)]
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemessages.py", line 358, in <listcomp>
ignored_roots = [os.path.normpath(p) for p in (settings.MEDIA_ROOT, settings.STATIC_ROOT)]
File "/usr/lib/python3.4/posixpath.py", line 335, in normpath
initial_slashes = path.startswith(sep)
AttributeError: 'NoneType' object has no attribute 'startswith'

我试过用不同的文件扩展名和忽略模式。你们有什么建议吗?

暂无标签

3 个回答

1

这个命令对我来说是有效的:

python manage.py makemessages --locale=en --ignore=venv/*

3

我从django 1.7开始就遇到了同样的问题。我使用manage.py来生成消息,而不是使用django-admin.py,并且不包括环境文件夹:

python manage.py makemessages --locale=en --ignore=venv/*
1

这是因为在Django 1.7.1版本中出现了一个bug。你可以通过更新Django到最新版本来解决这个问题,方法是使用:

  pip install -U django

另外,关于这个问题的相关讨论和解答可以在这里这里找到。

撰写回答