Не удается импортировать имя uuid генерировать случайные в heroku django


Я работаю над проектом, который сканирует почтовый ящик пользователя gmail и предоставляет отчет. Я развернул его в heroku со следующими характеристиками:

язык: Python 2.7

основа: Django 1.8

Планировщик заданий: сельдерей (Rabbitmq-bigwig на урл)

теперь, когда heroku выполнить его сельдерей не дает мне выход. В Heroku толкать его показывать ошибка конфигурации Collectstatic. Я пробовал использовать пакет whitenoise

также попытался выполнить: heroku run python manage.py collectstatic -- dry-run --noinput Все еще получаю ту же ошибку.

$ heroku run python manage.py collectstatic --noinput дал следующие подробности ошибки.

File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 303, in execute
settings.INSTALLED_APPS
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/app/salesblocker/__init__.py", line 5, in <module>
from .celery import app as celery_app 
File "/app/salesblocker/celery.py", line 5, in <module>
from celery import Celery
File "/app/.heroku/python/lib/python2.7/site-packages/celery/__init__.py", line 131, in <module>
from celery import five  # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/celery/five.py", line 153, in <module>
from kombu.utils.compat import OrderedDict  # noqa
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 19, in <module>
from uuid import UUID, uuid4 as _uuid4, _uuid_generate_random
ImportError: cannot import name _uuid_generate_random

Я также попытался откатить Heroku commit к предыдущему рабочему коммиту и клонировал это код, но при следующей фиксации(изменения:удалено изображение носителя из папки носителя) его снова показывает ту же ошибку.

спасибо заранее

3 54

3 ответа:

вы попадаетесь этот вопрос, что влияет на Python 2.7.11 (комбу требуется сельдерей).

проблема исправлена в Kombu 3.0.30.

при обновлении kombu является идеальным вариантом, если вы застряли с более старыми зависимостями, которые не позволяют этого, разместив это в верхней части моего settings.py работал на меня:

import uuid
uuid._uuid_generate_random = None

это работает, потому что _uuid_generate_random был удален здесь, и это просто восстанавливает значение по умолчанию. Этот хак кажется разумным, как комбу только проверяет это на работа вокруг ошибки решена в 2007 году, и если вам нужно это исправление из-за недавнего обновления Python, вы по своей сути не влияет :)

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

затем достаточно обновить основные пакеты, а затем повторно заморозить полный список зависимостей с рабочей версией Kombu.

pip install --upgrade -r requirements-to-freeze.txt
pip freeze > requirements.txt

и проверить вещи, чтобы убедиться, что обновление не сломал что-то еще;)