Когда вы используете абсолютный путь, он берется буквально, т. Е. Начиная с корня файловой системы, т. Е. /
.
Когда вы используете относительный путь, т. Е. Без /
в начале, эторазрешается из каталога , где скрипт вызывается из , а не там, где скрипт фактически находится в файловой системе.
Поэтому, когда вы вызываете команду управления Django через, например, ./manage.py <command>
, он ищетпуть, начиная с текущего каталога manage.py
, то есть os.path.dirname('manage.py')
. Если вы дадите путь как static/json/spreadsheets.json
, полный путь, который он ищет:
os.path.join(
os.path.abspath(os.path.dirname('manage.py')),
'/static/json/spreadsheets.json'
)
Поэтому вам нужно убедиться, что у вас есть файл spreadsheets.json
в правильном каталоге. Лучшим подходом было бы использовать абсолютный путь для таких сценариев. Если вы используете GNU / Linux, вы можете использовать:
readlink -f static/json/spreadsheets.json
, чтобы получить абсолютный путь.
Кроме того, вместо жесткого кодирования файла, вы должны взять файлв качестве аргумента для команды управления. Команда управления Django использует argparse
для разбора аргументов, поэтому вы можете взглянуть на doc .