Ошибка Django: невозможно использовать ImageField, потому что Pillow не установлен

В настоящее время я учусь использовать Django для разработки веб-сервиса. Проходя онлайн-курс по Udemy, я столкнулся с проблемой использования ImageField в models.py. Моя проблема в том, что когда я выполняю команду runserver, Django показывает следующую ошибку, хотя я почти уверен, что библиотека Pillow установлена.

В models.py у меня есть следующий код:

from django.db import models
from django.contrib.auth.models import User 
class UserProfileInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.PROTECT) 
    portfolio = models.URLField(blank=True)
    picture = models.ImageField(upload_to="profile_pics")
    def __str__(self):
     return user.self.username

Когда я запускаю сервер, я получаю следующую ошибку: python manage.py runserver Выполнение системных проверок...

Unhandled exception in thread started by <function check_errors<locals>.wrapper at 0x10407b6a8>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 121, in inner_run
self.check(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site- 
packages/django/core/management/base.py", line 410, in check
 raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check 
 identified some issues:

ERRORS:
first_app.UserProfileInfo.picture: (fields.E210) Cannot use ImageField because 
Pillow is not installed.
HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip
install Pillow".

System check identified 1 issue (0 silenced).

Итак, следуя сообщению, я проверил установленные модули, используя метод, представленный здесь: Как я могу получить список локально установленных модулей Python?, Следующий код запускается в файле в том же каталоге, что и manage.py. Я использую Pycharm для использования виртуальной среды, поэтому я предполагаю, что я использую ту же среду, что и проект Django, когда я запускаю сервер.

В результате описанного выше способа я увидел, что подушка установлена, вот так:

['argon2 == 0.1.10', 'bcrypt == 3.1.4', 'cffi == 1.11.5', 'django == 2.0.5', 'faker == 0.8.15', 'olefile == 0.45.1 ',' pillow == 5.0.0 ',' pip == 9.0.1 ',' pycparser == 2.18 ',' python-dateutil == 2.7.3 ',' pytz == 2018.4 ',' setuptools == 28.8.0 ',' six == 1.11.0 ',' text-unidecode == 1.2 ']

Как я могу исправить эту проблему? Или есть ли альтернатива использованию изображений в Django без Pillow?

1 ответ

Я столкнулся с этой проблемой в контейнере докеров. Pillow не установится без поддержки заголовков jpeg и zlib и библиотеки, поэтому я добавил в сборку zlib-dev и jpeg-dev, а затем удалил их после установки Pillow. Конечно, тогда Pillow отказался импортировать, потому что отсутствуют libjpeg и друзья. Решением было добавить обратно соответствующие (не относящиеся к разработчикам) пакеты, и все заработало как надо.

Чтобы определить virtualenv для вашего проекта в pycharm, сначала перейдите по этому пути:

Файл -> Настройки -> Проект -> Интерпретатор проекта

Теперь вы можете увидеть все проекты, которые открыты в Pycharm. выберите нужный проект и нажмите кнопку конфигурации Project Interpreter, затем выберите Добавить локальный интерпретатор Python. в этой форме выберите Существующая среда. Теперь в кнопке внутри Интерпретатора вы можете выбрать желаемое virtualenv (myvirtualenv -> bin -> python3.x)

Я не знаю конкретных причин, но, похоже, я нашел решение для ситуации, когда virtualenv, созданный PyCharm, не распознается терминалом в PyCharm. Решение состоит в том, чтобы создать virtualenv с помощью библиотеки virtualenv в простом python и установить ее в качестве интерпретатора проекта в PyCharm, а не создавать virtualenv через PyCharm.

Другие вопросы по тегам