Не удается запустить docker VM: ошибка импорта: невозможно импортировать имя 'format_lazy' из 'django .utils.text' (Python Ошибка) - PullRequest
1 голос
/ 06 января 2020

Я не могу запустить docker ВМ из-за выдаваемой ошибки Python.

Я попытался переключить Python версии с 3,5 на 3,6 на 3,7.

Я подключился к виртуальной машине напрямую и попытался запустить команды непосредственно из командной строки (например, ./manage.py makemigrations) и получил ту же ошибку. Содержимое manage.py находится внизу.

Виртуальная машина docker, созданная с использованием:

docker-compose pull

docker-compose build

docker-compose up

При запуске виртуальной машины отображается следующая ошибка:

web_1  | ImportError: cannot import name 'format_lazy' from 'django.utils.text' (/usr/local/lib/python3.7/site-packages/django/utils/text.py)

Полная трассировка ниже:


web_1  | Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f9ba32c7b90>
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 113, in inner_run
web_1  |     autoreload.raise_last_exception()
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception
web_1  |     six.reraise(*_exception)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/six.py", line 685, in reraise
web_1  |     raise value.with_traceback(tb)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/__init__.py", line 27, in setup
web_1  |     apps.populate(settings.INSTALLED_APPS)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/apps/registry.py", line 108, in populate
web_1  |     app_config.import_models(all_models)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/apps/config.py", line 199, in import_models
web_1  |     self.models_module = import_module(models_module_name)
web_1  |   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1  |     return _bootstrap._gcd_import(name[level:], package, level)
web_1  |   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1  |   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1  |   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1  |   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1  |   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1  |   File "/usr/local/lib/python3.7/site-packages/filer/models/__init__.py", line 5, in <module>
web_1  |     from .imagemodels import *  # noqa
web_1  |   File "/usr/local/lib/python3.7/site-packages/filer/models/imagemodels.py", line 12, in <module>
web_1  |     from .abstract import BaseImage
web_1  |   File "/usr/local/lib/python3.7/site-packages/filer/models/abstract.py", line 12, in <module>
web_1  |     from ..utils.compatibility import PILImage
web_1  |   File "/usr/local/lib/python3.7/site-packages/filer/utils/compatibility.py", line 8, in <module>
web_1  |     from django.utils.text import Truncator, format_lazy
web_1  | ImportError: cannot import name 'format_lazy' from 'django.utils.text' (/usr/local/lib/python3.7/site-packages/django/utils/text.py)

Manage.py:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

Содержимое Dockerfile:

FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install pip==9.0.1
RUN pip install -r requirements.txt
ADD . /app/

docker -создать .yml

version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://app@postgres:5432/app
    depends_on:
      - db

1 Ответ

0 голосов
/ 06 января 2020

django.utils.text.format_lazy функция была добавлена ​​в Django 2.0.

Вам следует либо обновить версию Django до 2.0, либо понизить расширение до версии, которая не зависит от этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...