无法在 heroku django 中导入名称 _uuid_generate_random
Cannot import name _uuid_generate_random in heroku django
我正在进行一个扫描用户 gmail 收件箱并提供报告的项目。我已将其部署在 heroku 中,规格如下:
语言:Python 2.7
框架:Django 1.8
任务调度器:Celery(Rabbitmq-bigwig for broker url)
现在,当 heroku 执行它时,celery 没有给我输出。在 Heroku 上推送显示 Collectstatic 配置错误。我试过使用 whitenoise 包
还尝试执行:heroku 运行 python manage.py collectstatic --dry-运行 --noinput
仍然出现相同的错误。
$ heroku 运行 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 提交回滚到之前的工作提交并克隆该代码,但在下一次提交(更改:从媒体文件夹中删除媒体图像)时再次显示相同的错误。
提前致谢
您遇到了 this issue,这会影响 Python 2.7.11(Celery 需要 Kombu)。
此问题已在 Kombu 3.0.30 中修复。
是的,Alasdair 提到的问题是导致错误的原因。我通过遵循 this workflow 只保留基本的 requirements-to-freeze.txt 解决了我的项目中的问题,我在其中列出了 Celery,但没有像 Kombu 这样的依赖项。
然后,升级必要的软件包就足够了,然后用可用的 Kombu 版本重新冻结完整的依赖项列表。
pip install --upgrade -r requirements-to-freeze.txt
pip freeze > requirements.txt
并进行测试以确保升级不会破坏其他东西 ;)
虽然升级 kombu 是理想的选择,但如果您受困于不允许这样做的旧依赖项,请将其放在我的 settings.py 的顶部对我有用:
import uuid
uuid._uuid_generate_random = None
这是有效的,因为 _uuid_generate_random 已被删除 here, and this simply restores the default value. This hack seems reasonable as Kombu only checks this to work around a bug resolved in 2007,如果您因为最近的 Python 更新而需要此修复,您本身不会受到影响:)
我正在进行一个扫描用户 gmail 收件箱并提供报告的项目。我已将其部署在 heroku 中,规格如下:
语言:Python 2.7
框架:Django 1.8
任务调度器:Celery(Rabbitmq-bigwig for broker url)
现在,当 heroku 执行它时,celery 没有给我输出。在 Heroku 上推送显示 Collectstatic 配置错误。我试过使用 whitenoise 包
还尝试执行:heroku 运行 python manage.py collectstatic --dry-运行 --noinput 仍然出现相同的错误。
$ heroku 运行 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 提交回滚到之前的工作提交并克隆该代码,但在下一次提交(更改:从媒体文件夹中删除媒体图像)时再次显示相同的错误。
提前致谢
您遇到了 this issue,这会影响 Python 2.7.11(Celery 需要 Kombu)。
此问题已在 Kombu 3.0.30 中修复。
是的,Alasdair 提到的问题是导致错误的原因。我通过遵循 this workflow 只保留基本的 requirements-to-freeze.txt 解决了我的项目中的问题,我在其中列出了 Celery,但没有像 Kombu 这样的依赖项。
然后,升级必要的软件包就足够了,然后用可用的 Kombu 版本重新冻结完整的依赖项列表。
pip install --upgrade -r requirements-to-freeze.txt
pip freeze > requirements.txt
并进行测试以确保升级不会破坏其他东西 ;)
虽然升级 kombu 是理想的选择,但如果您受困于不允许这样做的旧依赖项,请将其放在我的 settings.py 的顶部对我有用:
import uuid
uuid._uuid_generate_random = None
这是有效的,因为 _uuid_generate_random 已被删除 here, and this simply restores the default value. This hack seems reasonable as Kombu only checks this to work around a bug resolved in 2007,如果您因为最近的 Python 更新而需要此修复,您本身不会受到影响:)