/ / Разрешение, отказано в мандеми на Django - python, django, интернационализация, django-admin, manage.py

Разрешение, отказано в мандеми на Django - python, django, интернационализация, django-admin, manage.py

Опитвам се да добавя i8n в приложение Джанго, но когато изпълнявам:

(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 за отговор № 1

Док на Джанго наистина не "препоръчва" да се използва django-admin вместо ./manage.py - всъщност докторът заявява това:

Обикновено, когато работите върху един Джангопроект, е по-лесно да използвате manage.py от django-admin. (...) Примерите в командния ред в целия документ използват django-admin като последователни, но всеки пример може да използва manage.py или python -m django също.

Причината е, че:

Освен това, управлявайте.py се създава автоматично във всеки проект на Django. manage.py прави същото като django-admin, но се грижи за няколко неща за вас: Той поставя пакета на вашия проект на sys.path. Той задава променливата на средата DJANGO_SETTINGS_MODULE, така че да сочи към файла settings.py на проекта.

Всъщност всъщност втората точка не е напълно точна - ./manage.py само набори DJANGO_SETTINGS_MODULE ако е не вече поставени във вашето обкръжение.

Така че, когато използвате django-admin трябва да се уверите, че той ще намери своя модул за настройки (или чрез настройка на променливата за околната среда, или като го пренесе с --settings опция) и че коренът на проекта ви е във вашия пиthonpath.

Всъщност, с изключение на startproject команда - откъде по дефиниция нямате вече ./manage.py файл - няма причина да се използва django-admin изобщо, ако не искате да използвате изрично друг модул за настройки, без да променяте променливата за околната среда.