Развертывание проекта Django через Git в Heroku: «Модуль не назван .. - ошибка» - PullRequest
0 голосов
/ 09 декабря 2018

Я надеюсь, что вы сможете мне помочь, и в то же время, я надеюсь, что этот запрос может пригодиться другим здесь и в будущем.

Основано на превосходной книге: Ускоренный курс Python ЭрикаМэттс, я пытаюсь развернуть приложение Django в Heroku с использованием Git и столкнулся с несколькими проблемами.Обратите внимание, что здесь есть некоторые исправления к книге: https://ehmatthes.github.io/pcc/updates.html

Я специально упоминаю книгу здесь, так как считаю ее одной из лучших книг для начинающих на различных сайтах, поэтомуЯ могу представить себе других людей, сталкивающихся с такими же проблемами - также, поскольку есть несколько сообщений, связанных с этими 3 темами.

Первоначально приложение могло быть передано в Git, но затем не отправлено в Heroku с помощью:

git push heroku master

Часть 1: Эта ошибка привела к ошибке:

No Procfile and no package.json file found in Current Directory - See heroku local --help

Чтобы решить эту проблему, необходимо убедиться, что файл имеетникакое расширение (mac os) не показывало его, но ls в каталоге показывал конец файла .txt в файле.

Часть 2: повторная попытка, теперь разрешено для нового сообщения:

ModuleNotFoundError: no module named 'bootstrap3"

Эту проблему можно решить, убедившись, что требование django-bootstrap3 == 6.xx было доступно в файле needs.txt, когда команда:

pip freeze> needs.txt

выдано - вручнуюдобавление этого не сработало.Кроме того, я вручную добавил:

appdirs==1.4.3

Далее я следовал инструкциям на веб-сайте, которые инструктировали, как отключить сбор статических сигналов:

heroku config:set DISABLE_COLLECTSTATIC=1

Эта комбинация сделала меня на шаг вперед.

Часть 3 Все это сделано, теперь я смог успешно запустить код:

git push heroku master

Однако, работает:

heroku ps

непосредственно после этого показывает сбой

web.1: сбой 2018/12/09 11:24:35 +0100 (~ 42m назад)

при попытке перенастроить базу данных с помощью следующей команды:

heroku run python manage.py migrate

Теперь дайте мне знать, что в нем отсутствует модуль: dj-database-url

ModuleNotFoundError: Нет модуля с именем 'dj_database_url'

Однако, глядя на мой файл require.txtУ меня явно есть это в списке здесь.

Поскольку первичные ссылки в сети должны либо проверять, включены ли они в файл needs.txt, файл gunicorn определен правильно, либо collectstatic отключен - я в растерянности и надеюсь, что кто-то сможетчтобы помочь с этим, а также надеяться, вышеуказанные указатели пойдут на пользу другим, имеющим такие же ранние проблемы.

Мои файлы выглядят следующим образом:

Procfile

web: gunicorn learning_log.wsgi —-log-file -

Procfile с большой буквы "P", а приложение называется learning_log

needs.txt

astroid==2.1.0
autopep8==1.4.3
dj-database-url==0.5.0
dj-static==0.0.6
Django==2.1.3
gunicorn==19.9.0
isort==4.3.4
lazy-object-proxy==1.3.1
mccabe==0.6.1
pycodestyle==2.4.0
pylint==2.2.2
pytz==2018.7
six==1.11.0
static3==0.7.0
wrapt==1.10.11
django-bootstrap3==6.2.2
psycopg2>=2.6.1
appdirs==1.4.3

wsgi.py

import os

from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "learning_log.settings")
application = get_wsgi_application()
application = DjangoWhiteNoise(application)

snip из settings.py-file:

# Settings for django-bootstrap3
BOOTSTRAP3 = {
    'include_jquery': True,
}

# Heroku Settings
cwd = os.getcwd()
print("--- CWD ---\n", cwd, "\n---\n")
if cwd == '/app' or cwd[:4] == '/tmp':
    import dj_database_url
    DATABASES = {
        'default': dj_database_url.config(default='postgres://localhost')
    }

    # Honor the 'X-Forwarded-Proto' header for request.is_secure().
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    # Allow all host headers.
    ALLOWED_HOSTS = ['*']

    # Static asset configuration
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = 'staticfiles'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )

    STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

runtime.txt

python-3.7.0

Я искренне надеюсь, что кто-то может помочь здесь -Я немного растерялся относительно того, что еще может потребоваться.

Надеюсь, этого достаточно, чтобы объяснить - я понимаю, что, по-видимому, были и некоторые обновления на стороне Heroku, но узнать это действительносложно.

Большое спасибо, Саймон

1 Ответ

0 голосов
/ 10 декабря 2018

Хорошо, после много-много испытаний - я наконец-то понял, что файл требований продолжал изменяться (я уверен, не только когда я запускал заморозку).

В результате несколько ранее установленных пакетов былибольше не в файле needs.txt.По сути, это означает, что эта ошибка действительно была завершена из-за того, что файл require.txt завершен и содержит ВСЕ требуемые пакеты.

Мой окончательный список пакетов был следующим:

appdirs==1.4.3
astroid==2.0.4
certifi==2018.8.24
chardet==3.0.4
cycler==0.10.0
Django==2.1.1
django-bootstrap3==11.0.0
dj-database-url==0.5.0
dj-static==0.0.6
gunicorn==19.3.0
idna==2.7
isort==4.3.4
kiwisolver==1.0.1
lazy-object-proxy==1.3.1
matplotlib==2.2.2
mccabe==0.6.1
numpy==1.15.0
psycopg2>=2.6.1
pygal==2.4.0
pygal-maps-world==1.0.2
pygame==1.9.4
pylint==2.1.1
pyparsing==2.2.0
python-dateutil==2.7.3
pytz==2018.5
requests==2.19.1
six==1.11.0
static3==0.6.1
urllib3==1.23
virtualenv==16.0.0
whitenoise==4.1.2
wrapt==1.10.11
...