Как уже упоминалось в ответ thebwt , это проблема пути.Рабочий каталог для вашей среды django не будет каталогом вашего приложения, поэтому вы не можете найти ваш файл.
Вам нужно будет указать либо полный путь к вашему rrd-файлу (не идеально), либо относительный путьв рабочий каталог.
В качестве альтернативы, обычная хитрость для решения таких проблем - извлечь каталог, в котором находится конкретный модуль python (используя __file__
), и использовать его для перевода путей (относительнотекущий файл) к абсолютному пути.Например:
FILE_DIR = os.path.realpath(os.path.dirname(__file__))
rel_to_abs = lambda *x: os.path.join(FILE_DIR, *x)
В вашем случае:
# in view.py
import os
import rrdtools
FILE_DIR = os.path.realpath(os.path.dirname(__file__))
rel_to_abs = lambda *x: os.path.join(FILE_DIR, *x)
def hello(request):
info = rrdtool.info(rel_to_abs('usage.rrd'))
return HttpResponse(info)
ps, вы могли видеть, что этот метод используется в settings.py
для указания путей к sqlite3 DATABASE_NAME
, MEDIA_ROOT
и т. д., чтобы абсолютный путь был получен во время выполнения, а не был жестко закодирован.