#29246 closed Bug (needsinfo)
compilemessages management-command fails with UnicodeDecodeError
Reported by: | Tarun Gaba | Owned by: | Liuyang Qin |
---|---|---|---|
Component: | Internationalization | Version: | 1.11 |
Severity: | Normal | Keywords: | compilemessages UnicodeDecodeError |
Cc: | Daniel Browne | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
When running compilemessages command on a django project which contains Unicode characters in filenames (for example in static files), it fails with a UnicodeError:
Traceback (most recent call last): File "manage.py", line 62, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/compilemessages.py", line 70, in handle for dirpath, dirnames, filenames in os.walk('.', topdown=True): File "/usr/lib/python2.7/os.py", line 294, in walk for x in walk(new_path, topdown, onerror, followlinks): File "/usr/lib/python2.7/os.py", line 294, in walk for x in walk(new_path, topdown, onerror, followlinks): File "/usr/lib/python2.7/os.py", line 284, in walk if isdir(join(top, name)): File "/usr/lib/python2.7/posixpath.py", line 80, in join path += '/' + b UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 23: ordinal not in range(128)
The 'walk' functionality in compilemessages
was introduced in django 1.9
: (https://github.com/django/django/blob/master/django/core/management/commands/compilemessages.py#L67)
Change History (6)
comment:1 by , 7 years ago
Component: | Uncategorized → Internationalization |
---|---|
Resolution: | → invalid |
Status: | new → closed |
comment:2 by , 6 years ago
Cc: | added |
---|---|
Resolution: | invalid |
Status: | closed → new |
Version: | 1.9 → 1.11 |
I can reproduce this issue on Django 1.11 which is still supported. Can the '.' passed to os.walk not become b'.' in order to bypass the unicode_literals import? I think this would solve the problem.
(https://github.com/django/django/blob/stable/1.11.x/django/core/management/commands/compilemessages.py#L70)
comment:3 by , 6 years ago
Per our supported versions policy, 1.11 is only receiving data loss and security fixes. Can the issue be reproduce on Django's master branch (which supports Python 3 only).
comment:4 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:5 by , 6 years ago
Resolution: | → needsinfo |
---|---|
Status: | assigned → closed |
comment:6 by , 6 years ago
Got the same bug on django 1.11. One simple way to workaround this is to cd to your locale/ directory before calling compilemessages. Btw that also speed up things, avoiding to search locale folders everywhere.
Django 1.9 is no longer supported. Please reopen if you can reproduce with Django's master branch, which supports only Python 3.