Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

375
Visualizações
Django rest Error - AttributeError: el módulo 'colecciones' no tiene atributo 'MutableMapping'

Estoy creando la aplicación Django, y funciona bien en mi máquina, pero cuando ejecuto dentro del contenedor docker, su marco de descanso sigue fallando, pero cuando comento cualquier conexión con el marco de descanso, funciona bien.

  • Mi máquina: Kali Linux 2021.3
  • máquina docker: Raspberry Pi 4 4gb
  • imagen del contenedor docker: python:rc-alpine3.14
  • versión de Python en mi máquina: Python 3.9.7
  • versión de Python en el contenedor: Python 3.10.0rc2

salida de error:

 Traceback (most recent call last): File "/app/manage.py", line 22, in <module> main() File "/app/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv super().run_from_argv(argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.10/site-packages/django/core/management/commands/test.py", line 55, in handle failures = test_runner.run_tests(test_labels) File "/usr/local/lib/python3.10/site-packages/django/test/runner.py", line 728, in run_tests self.run_checks(databases) File "/usr/local/lib/python3.10/site-packages/django/test/runner.py", line 665, in run_checks call_command('check', verbosity=self.verbosity, databases=databases) File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 181, in call_command return command.execute(*args, **defaults) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.10/site-packages/django/core/management/commands/check.py", line 63, in handle self.check( File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 419, in check all_issues = checks.run_checks( File "/usr/local/lib/python3.10/site-packages/django/core/checks/registry.py", line 76, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "/usr/local/lib/python3.10/site-packages/django/core/checks/urls.py", line 13, in check_url_config return check_resolver(resolver) File "/usr/local/lib/python3.10/site-packages/django/core/checks/urls.py", line 23, in check_resolver return check_method() File "/usr/local/lib/python3.10/site-packages/django/urls/resolvers.py", line 412, in check for pattern in self.url_patterns: File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python3.10/site-packages/django/urls/resolvers.py", line 598, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 48, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python3.10/site-packages/django/urls/resolvers.py", line 591, in urlconf_module return import_module(self.urlconf_name) File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/app/project/urls.py", line 24, in <module> path("", include("apps.urls", namespace="apps")), File "/usr/local/lib/python3.10/site-packages/django/urls/conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/app/apps/urls.py", line 3, in <module> from . import api File "/app/apps/api.py", line 1, in <module> from .serializers import * File "/app/apps/serializers.py", line 1, in <module> from rest_framework import serializers File "/usr/local/lib/python3.10/site-packages/rest_framework/serializers.py", line 27, in <module> from rest_framework.compat import postgres_fields File "/usr/local/lib/python3.10/site-packages/rest_framework/compat.py", line 59, in <module> import requests File "/usr/local/lib/python3.10/site-packages/requests/__init__.py", line 63, in <module> from . import utils File "/usr/local/lib/python3.10/site-packages/requests/utils.py", line 27, in <module> from .cookies import RequestsCookieJar, cookiejar_from_dict File "/usr/local/lib/python3.10/site-packages/requests/cookies.py", line 172, in <module> class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping): AttributeError: module 'collections' has no attribute 'MutableMapping'

Dockerfile

 FROM python:rc-alpine3.14 COPY . /app WORKDIR /app ENV UWSGI_PROFILE=core ENV PYTHONUNBUFFERED=TRUE RUN apk add --update --no-cache g++ gcc libxslt-dev # add some nessery libs RUN apk add python3-dev build-base linux-headers pcre-dev RUN pip3 install -U pip # upgrade pip RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev \ && apk add jpeg-dev zlib-dev libjpeg \ && pip install Pillow \ && apk del build-deps RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates && \ wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python RUN pip install uwsgi RUN pip3 install -r requirements.txt # install all requirements RUN python uploadstatics.py EXPOSE 80 CMD ["gunicorn","project.wsgi:application", "-b 0.0.0.0:8060"]

NOTAS:

  • Uso gunicorn para ejecutar la aplicación (el error muestra que incluso yo no ejecuto desde manage.py)
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede degradar su versión de Python. Eso debería resolver tu problema; si no, use collections.abc.Mapping en lugar de las collections.Mapping obsoletas.Mapping.

Consulte aquí: Enlace

over 4 years ago · Santiago Trujillo Relatório

0

En su archivo docker, configura la imagen como python:rc-alpine3.14 que usa python 3.10. Teniendo en cuenta que 3.10 se lanzó recientemente, muchos de los paquetes aún no se han actualizado y, según las restricciones de versión que tenga en su requirements.txt eso también podría causar versiones incompatibles. El problema aquí es que Django Rest framework usa el paquete de solicitudes que usa collections.MutableMapping , si escribo esto en python 3.9, recibo la siguiente advertencia que dice que esto se eliminará en 3.10, por lo tanto, debe cambiar por ahora a python 3.9:

 Warning (from warnings module): File "<pyshell#1>", line 1 DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working

¡Otra cosa sobre escribir python:rc-alpine3.14 ya que la imagen solo pide que su código se rompa! Especifique una versión estable y lanzada específica en lugar del candidato de lanzamiento rc :

 FROM python:3.9.7-alpine3.14 ...
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda