Django makemessages中的权限被拒绝

时间:2017-03-10 12:55:15

标签: python django internationalization django-admin manage.py

我试图将i8n添加到Django应用程序中,但是当我执行时:

(venv) user@machine:~/path/to/repo$ django-admin makemessages -l es

抛出下一个错误:

PermissionError: [Errno 13] Permission denied: './venv/lib/python3.5/site-packages/Jinja2-2.9.5.dist-info/LICENSE.txt.py'

但是,如果我将它与manage.py一起使用而不是django-admin,它可以正常工作。在django文档中,他们建议使用django-admin。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Django的doc并不真的“推荐”使用django-admin代替./manage.py - 实际上the doc states that

  

通常,在处理单个Django项目时,使用manage.py比使用django-admin更容易。   (......)   本文档中的命令行示例使用django-admin保持一致,但任何示例都可以使用manage.py或python -m django。

原因是:

  

此外,在每个Django项目中自动创建manage.py。 manage.py与django-admin做同样的事情,但为你处理一些事情:   它将您的项目包放在sys.path上。   它设置DJANGO_SETTINGS_MODULE环境变量,使其指向项目的settings.py文件。

NB实际上第二点并非完全准确 - ./manage.py只会设置DJANGO_SETTINGS_MODULE,如果它已经在您的环境中设置

因此,当使用django-admin时,您必须确保它将找到您的设置模块(通过设置环境变量或通过使用--settings选项传递它)并且您的项目的根目录是你的pythonpath。

实际上,除startproject命令外 - 根据定义,您还没有./manage.py文件 - 除非您需要,否则没有理由使用django-admin明确使用不同的设置模块而不更改环境变量。