Получить абсолютный путь приложения django
Я пишу модульный тест, который должен получить доступ к файлу изображения, который я поместил в каталог" светильники " прямо под каталогом приложения django. Я хочу открыть этот файл изображения в моем тесте, используя относительный путь, который потребует от меня получить абсолютный путь приложения django. Есть ли способ получить абсолютный путь приложения django?
3 ответов
модули Python (включая приложения Django) имеют __file__
атрибут, который сообщает вам местоположение их __init__.py
файл в файловой системе, so
import appname
pth = os.path.dirname(appname.__file__)
должны делать то, что вы хотите.
в обычных обстоятельствах, os.path.absname(appname.__path__[0])
, но приложения могут изменить это, если они хотят импортировать файлы странным образом.
(Я всегда делаю PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
в своем settings.py
, хотя -- упрощает различные настройки, которые должны быть абсолютными путями.)
обычно это то, что я добавляю в свой settings.py файл, чтобы я мог ссылаться на корень проекта.
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
этот метод получит каталог любого файла python.
поэтому принятый ответ обычно работает нормально. Однако для
- пакеты пространства имен с несколькими путями или
- приложения, которые явно настраивают свои пути в конфигурации,
их предполагаемый путь может не совпадать с