Приложения Heroku Python/Django, все одновременно разработанные ImportError

Сегодня все мои приложения Python/Django на Heroku перестали работать.

Журналы для всех из них показывают ту же проблему. При попытке перезагрузки/сборки журнал ошибок выглядит так, как показано ниже.

Я попытался перестроить проекты в новой локальной виртуальной среде, и они работают нормально локально. Однако при нажатии на Heroku они сталкиваются с этим ImportError и отказываются развертывать.

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

Пожалуйста, дайте мне знать, есть ли какая-либо другая информация, которую я могу предоставить.

Журнал ошибок:

2014-06-03T22:30:05.293788+00:00 heroku[web.1]: State changed from crashed to starting
2014-06-03T22:30:11.509350+00:00 app[web.1]: Traceback (most recent call last):
2014-06-03T22:30:11.509438+00:00 app[web.1]:   File "bluewaterads/manage.py", line 22, in <module>
2014-06-03T22:30:11.509536+00:00 app[web.1]:     from django.core.management import execute_manager
2014-06-03T22:30:11.509589+00:00 app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 8, in <module>
2014-06-03T22:30:11.509644+00:00 app[web.1]:     from django.core.management.base import BaseCommand, CommandError, handle_default_options
2014-06-03T22:30:11.509667+00:00 app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/base.py", line 16, in <module>
2014-06-03T22:30:11.509707+00:00 app[web.1]:     from django.utils.encoding import smart_str
2014-06-03T22:30:11.509727+00:00 app[web.1]:   File "/app/.heroku/venv/lib/python2.7/site-packages/django/utils/encoding.py", line 2, in <module>
2014-06-03T22:30:11.509796+00:00 app[web.1]:     import urllib
2014-06-03T22:30:11.509824+00:00 app[web.1]:   File "/usr/local/lib/python2.7/urllib.py", line 26, in <module>
2014-06-03T22:30:11.509869+00:00 app[web.1]:     import socket
2014-06-03T22:30:11.509886+00:00 app[web.1]:   File "/usr/local/lib/python2.7/socket.py", line 47, in <module>
2014-06-03T22:30:11.509919+00:00 app[web.1]:     import _socket
2014-06-03T22:30:11.509954+00:00 app[web.1]: ImportError: /app/.heroku/venv/lib/python2.7/lib-dynload/_socket.so: undefined symbol: _PyInt_AsInt
2014-06-03T22:30:13.014774+00:00 heroku[web.1]: State changed from starting to crashed
2014-06-03T22:30:10.241602+00:00 heroku[web.1]: Starting process with command `python bluewaterads/manage.py run_gunicorn 0.0.0.0:33709 -w 4`
2014-06-03T22:30:13.015823+00:00 heroku[web.1]: Process exited with status 1

Requirements.txt:

Django==1.4.1
Mezzanine==1.2.4.1
Pillow==1.7.7
South==0.7.6
bleach==1.1.5
boto==2.5.2
dj-database-url==0.2.1
django-appconf==0.5
django-compressor==1.2
django-s3-storages-utils==0.1.0
django-storages==1.1.5
filebrowser-safe==0.2.11
grappelli-safe==0.2.9
gunicorn==0.14.6
html5lib==0.95
psycopg2==2.4.5
pytz==2012d

PROCFILE:

web: python bluewaterads/manage.py run_gunicorn 0.0.0.0:$PORT -w 4

Ответ 1

Добавьте runtime.txt с python-2.7.7 в корневой каталог проекта и выполните повторное развертывание.

Heroku только что обновил среду выполнения до версии python-2.7.7. Эта статья была обновлена ​​вчера: https://devcenter.heroku.com/articles/python-runtimes

[EDITED]: Это заставляет Heroku перестроить виртуальный диск с нуля. Вы можете указать любое время выполнения.

Ответ 2

При развертывании приложения, если во время выполнения обновленный python-2.7.7 не используется.

Попробуйте очистить кеш-репозиторий.

Установите это: heroku plugins:install https://github.com/heroku/heroku-repo.git

Затем запустите эту команду: heroku repo:purge_cache -a appname

Затем разверните приложение.

Подробнее здесь: Heroku-repo

Ответ 3

Используете ли вы по умолчанию Python buildpack? Heroku находится в процессе обновления изображения Stack, и особенно если вы не используете текущий buildpack, могут быть несовместимости.

Чтобы узнать, используете ли вы по умолчанию buildpack, запустите

$ heroku config | grep BUILDPACK_URL

Пожалуйста, свяжитесь с поддержкой Heroku, если вы считаете, что это может быть причиной.

Ответ 4

У меня было то же самое с моим приложением heroku, и, попробовав миллион вещей, я решил его исправить, обновив все мои пакеты, включая django, добавив файл wsgi.py в соответствии с учебником django/heroku и изменив мой procfile к этому:

web: gunicorn app.wsgi --pythonpath app --log-file - 

Значение параметра pythonpath важно, потому что у меня было множество ошибок импорта и внутренних ошибок сервера, потому что у пушки не было правильного пути к моему приложению.