【问题标题】:Permission denied in Django makemessagesDjango makemessages中的权限被拒绝
【发布时间】:2017-03-10 12:55:14
【问题描述】:

我正在尝试将 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。

有什么想法吗?

【问题讨论】:

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


【解决方案1】:

Django 的文档并没有真正“建议”使用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 文件。

注意,实际上第二点并不完全准确 - ./manage.py 仅设置 DJANGO_SETTINGS_MODULE 如果它没有在您的环境中已经设置。

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

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

【讨论】:

  • 不客气 - 但我刚刚搜索了文档,你知道吗?-)
猜你喜欢
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2021-01-17
  • 2018-02-05
  • 2021-05-22
  • 2013-01-25
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多