Django错误:由于未安装枕头而无法使用ImageField

时间:2018-07-04 02:09:47

标签: python django django-models pillow

我目前正在学习如何使用Django开发Web服务。在学习有关Udemy的在线课程时,我在models.py中使用ImageField遇到了问题。我的问题是,当我执行runserver命令时,尽管我非常确定已安装库Pillow,但Django显示以下错误。

在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运行服务器     正在执行系统检查...

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).

因此,按照以下消息,我使用此处介绍的方法How can I get a list of locally installed Python modules?检查了已安装的模块。以下代码在与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']

如何解决此问题?或者,是否可以在没有Pillow的Django中使用图像?

3 个答案:

答案 0 :(得分:0)

为了在pycharm中为您的项目定义一个virtualenv,首先转到此路径:

文件->设置->项目->项目解释器

现在您可以看到在pycharm中打开的所有项目。选择所需的项目,然后点击项目解释器配置按钮,然后选择添加本地python解释器。在这种形式下,选择现有环境。现在,在解释器中的按钮中,您可以选择所需的virtualenv(myvirtualenv-> bin-> python3.x)

答案 1 :(得分:0)

我不知道具体原因,但似乎我找到了一种解决方案,以解决PyCharm终端无法识别PyCharm创建的virtualenv的情况。解决方案是通过使用纯Python中的virtualenv库创建virtualenv并将其设置为PyCharm中的项目解释器,而不是通过PyCharm创建virtualenv。

答案 2 :(得分:0)

我在docker容器中遇到了这个问题。没有jpeg和zlib标头和库支持,将无法安装Pillow,因此我在构建中添加了zlib-dev和jpeg-dev,然后在安装Pillow之后将其删除。当然,Pillow拒绝导入,因为缺少libjpeg和朋友。解决方案是重新添加相关的(非开发)程序包,然后一切按需开始工作。