Ошибка после развертывания Django в Heroku. LookupError

Я только что развернул свое приложение django для анализа настроений на heroku. Развертывание прошло успешно, и я могу получить доступ к таким функциям, как регистрация входа и т.д. Но я не могу анализировать текст, потому что, по-видимому, nltk не может быть найден. Но я установил и импортировал его на локальном хосте, и он уже работал раньше.

Это мой первый опыт развертывания в heroku, поэтому я не знаком со всем.

Вот как это выглядит на моем локальном хосте: enter image description here

Вот ошибка в herokuapp live webapp, когда я пытаюсь проанализировать настроения.

    LookupError at /sentiment/type/
**********************************************************************
  Resource e[93mpunkte[0m not found.
  Please use the NLTK Downloader to obtain the resource:

  e[31m>>> import nltk
  >>> nltk.download('punkt')
  e[0m
  For more information see: https://www.nltk.org/data.html

  Attempted to load e[93mtokenizers/punkt/PY3/english.picklee[0m

  Searched in:
    - '/app/nltk_data'
    - '/app/.heroku/python/nltk_data'
    - '/app/.heroku/python/share/nltk_data'
    - '/app/.heroku/python/lib/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - ''
**********************************************************************
Request Method: POST
Request URL:    https://sentymeter.herokuapp.com/sentiment/type/
Django Version: 4.0
Exception Type: LookupError
Exception Value:    
**********************************************************************
  Resource e[93mpunkte[0m not found.
  Please use the NLTK Downloader to obtain the resource:

  e[31m>>> import nltk
  >>> nltk.download('punkt')
  e[0m
  For more information see: https://www.nltk.org/data.html

  Attempted to load e[93mtokenizers/punkt/PY3/english.picklee[0m

  Searched in:
    - '/app/nltk_data'
    - '/app/.heroku/python/nltk_data'
    - '/app/.heroku/python/share/nltk_data'
    - '/app/.heroku/python/lib/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - ''
**********************************************************************
Exception Location: /app/.heroku/python/lib/python3.8/site-packages/nltk/data.py, line 583, in find
Python Executable:  /app/.heroku/python/bin/python
Python Version: 3.8.9
Python Path:    
['/app/.heroku/python/bin',
 '/app',
 '/app/.heroku/python/lib/python38.zip',
 '/app/.heroku/python/lib/python3.8',
 '/app/.heroku/python/lib/python3.8/lib-dynload',
 '/app/.heroku/python/lib/python3.8/site-packages']
Server time:    Wed, 05 Jan 2022 20:16:57 +0000

setting.py

Может ли кто-нибудь помочь мне решить эту проблему?

Похоже, что вы установили пакет nltk python, но не установили никаких данных для него.

Если вам нужно быстрое решение, вы можете подключиться к вашему heroku (heroku ps:exec ) и запустить оболочку django python manage.py shell, а затем установить соответствующие модули nltk из оболочки python:

import nltk
nltk.download('punkt')

Поскольку вы хотите иметь возможность перераспределить его, лучше создать команду management command для этого и запустить ее аналогично тому, как вы запускаете миграции. Команда управления должна находиться в разделе {app}/management/commands/

Такая команда:

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    help = 'Install NLTK stuff'
   
    def handle(self, *args, **options):
        import nltk
        nltk.download(..)

Вернуться на верх