【问题标题】:Import error when deploying Django app using Zappa?使用 Zappa 部署 Django 应用程序时导入错误?
【发布时间】:2019-07-03 03:43:43
【问题描述】:

使用 Zappa 将我的 Django 应用程序实例化为 lambda 函数时出现以下错误。

[1549659279288] Instancing..
[1549659279532] cannot import name 'models': ImportError
Traceback (most recent call last):
  File "/var/task/handler.py", line 580, in lambda_handler
  return LambdaHandler.lambda_handler(event, context)
  File "/var/task/handler.py", line 245, in lambda_handler
  handler = cls()
  File "/var/task/handler.py", line 151, in __init__
  wsgi_app_function = get_django_wsgi(self.settings.DJANGO_SETTINGS)
  File "/var/task/zappa/ext/django_zappa.py", line 9, in get_django_wsgi
  from django.core.wsgi import get_wsgi_application
  File "/var/task/django/core/wsgi.py", line 2, in <module>
  from django.core.handlers.wsgi import WSGIHandler
  File "/var/task/django/core/handlers/wsgi.py", line 8, in <module>
  from django.core.handlers import base
  File "/var/task/django/core/handlers/base.py", line 7, in <module>
  from django.urls import get_resolver, set_urlconf
  File "/var/task/django/urls/__init__.py", line 1, in <module>
  from .base import (
  File "/var/task/django/urls/base.py", line 8, in <module>
  from .exceptions import NoReverseMatch, Resolver404
  File "/var/task/django/urls/exceptions.py", line 1, in <module>
  from django.http import Http404
  File "/var/task/django/http/__init__.py", line 5, in <module>
  from django.http.response import (
  File "/var/task/django/http/response.py", line 13, in <module>
  from django.core.serializers.json import DjangoJSONEncoder
  File "/var/task/django/core/serializers/__init__.py", line 23, in <module>
  from django.core.serializers.base import SerializerDoesNotExist
  File "/var/task/django/core/serializers/base.py", line 6, in <module>
  from django.db import models
ImportError: cannot import name 'models'

我已经尝试使用本地运行应用程序,

python manage.py runserver

它在本地运行良好。 但是,当应用程序部署到 lambda 函数时,出现上述错误。

我正在使用 Django 版本 2.0.10、Python 3.6 以及 AWS Aurora RDS。

我希望 lambda 函数实例与本地一样没有错误。

【问题讨论】:

    标签: django django-rest-framework zappa python-zappa


    【解决方案1】:

    部署后调用 zappa 以保留打包的 zip 并检查文件夹结构或尝试从该文件夹运行项目。

    您是否将 Django 添加到需求文件中?我记得 Zappa 从全新的虚拟环境中重建 lambda 包,安装 requirements.txt 并应用您的文件夹。

    或仔细检查 cloudwatch 日志以了解导入错误。只有在部署后刷新容器时才会出现导入错误,而不会出现在每个 lambda 调用中。

    【讨论】:

    • 感谢 Mario 建议尝试从打包的 zip 运行项目 - 我注意到打包的 zip 中存在所有 python 包 - 你知道我如何使用邮政编码的包吗在本地运行我的代码,而不是创建一个 virtualenv 并使用 pip 安装包? .是的,我确实在需求文件中输入了 Django。
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多