Django makemessages 中的权限被拒绝
Permission denied in Django makemessages
我正在尝试将 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。
有什么想法吗?
Django 的文档并没有真正 "recommand" 使用 django-admin
而不是 ./manage.py
- 实际上是 the doc states that:
Generally, when working on a single Django project, it’s easier to use manage.py than django-admin.
(...)
The command-line examples throughout this document use django-admin to be consistent, but any example can use manage.py or python -m django just as well.
原因是:
In addition, manage.py is automatically created in each Django project. manage.py does the same thing as django-admin but takes care of a few things for you:
It puts your project’s package on sys.path.
It sets the DJANGO_SETTINGS_MODULE environment variable so that it points to your project’s settings.py file.
注意实际上第二点并不完全准确 - ./manage.py
仅设置 DJANGO_SETTINGS_MODULE
如果它 not 已经在您的环境中设置.
因此,当使用 django-admin
时,您必须确保它会找到您的设置模块(通过设置环境变量或通过 --settings
选项传递它)以及您项目的根目录在你的 pythonpath 中。
实际上,除了 startproject
命令 - 根据定义,您还没有 ./manage.py
文件 - 根本没有理由使用 django-admin
除非您想在不更改环境变量的情况下明确使用不同的设置模块。
我正在尝试将 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。
有什么想法吗?
Django 的文档并没有真正 "recommand" 使用 django-admin
而不是 ./manage.py
- 实际上是 the doc states that:
Generally, when working on a single Django project, it’s easier to use manage.py than django-admin. (...) The command-line examples throughout this document use django-admin to be consistent, but any example can use manage.py or python -m django just as well.
原因是:
In addition, manage.py is automatically created in each Django project. manage.py does the same thing as django-admin but takes care of a few things for you: It puts your project’s package on sys.path. It sets the DJANGO_SETTINGS_MODULE environment variable so that it points to your project’s settings.py file.
注意实际上第二点并不完全准确 - ./manage.py
仅设置 DJANGO_SETTINGS_MODULE
如果它 not 已经在您的环境中设置.
因此,当使用 django-admin
时,您必须确保它会找到您的设置模块(通过设置环境变量或通过 --settings
选项传递它)以及您项目的根目录在你的 pythonpath 中。
实际上,除了 startproject
命令 - 根据定义,您还没有 ./manage.py
文件 - 根本没有理由使用 django-admin
除非您想在不更改环境变量的情况下明确使用不同的设置模块。