Модули Python (включая приложения Django) имеют атрибут __file__
, который сообщает вам местоположение их файла __init__.py
в файловой системе, поэтому
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
,хотя - облегчает различные настройки, которые должны быть абсолютными путями.)