Python Django错误:无法使用ImageField,因为未安装Pillow

Python Django错误:无法使用ImageField,因为未安装Pillow,python,django,django-models,pillow,Python,Django,Django Models,Pillow,我目前正在学习如何使用Django开发web服务。在我学习Udemy的在线课程时,我在models.py中使用ImageField时遇到了一个问题。我的问题是,当我执行runserver命令时,Django显示以下错误,尽管我非常确定库已安装 在models.py中,我有以下代码: from django.db import models from django.contrib.auth.models import User class UserProfileInfo(models.Model

我目前正在学习如何使用Django开发web服务。在我学习Udemy的在线课程时,我在models.py中使用ImageField时遇到了一个问题。我的问题是,当我执行runserver命令时,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).
由启动的线程中未处理的异常 回溯(最近一次呼叫最后一次): 包装器中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/utils/autoreload.py”,第225行 fn(*args,**kwargs) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/management/commands/runserver.py”,第121行,在内部运行 self.check(display\u num\u errors=True) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site- packages/django/core/management/base.py”,第410行,检查中 引发系统检查错误(msg) django.core.management.base.SystemCheckError:系统检查错误:系统检查 确定了一些问题: 错误: first_app.UserProfileInfo.picture:(fields.E210)无法使用ImageField,因为 枕头未安装。 提示:在https://pypi.python.org/pypi/Pillow 或者运行命令“pip” 安装“枕头”。 系统检查发现1个问题(0个静音)。
因此,通过以下消息,我使用此处介绍的方法检查了已安装的模块:。以下代码在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','pick==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中使用图像而不使用枕头,还有其他选择吗?

要在pycharm中为您的项目定义VirtualNV,请首先转到以下路径:

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


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

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

我在docker容器中遇到了这个问题。如果没有jpeg和zlib头和库支持,Pillow将无法安装,因此我将zlib-dev和jpeg-dev添加到构建中,然后在安装Pillow后将其删除。当然后来枕头拒绝进口,因为libjpeg和朋友都失踪了。解决方案是重新添加相关(非开发)软件包,然后一切都按预期运行。

您确定在特定的python安装上运行django吗?您是从pycharm安装Pillow的吗?您是使用virtualenv吗?如果是,使用“pip freeze”命令显示已安装的virtualenv模块。也许你在机器上安装枕头,而不是在virtualenv@MohammadAli我在Django项目所在的目录下运行了pip freeze,并安装了saw Pillow,尽管它的版本比我打算使用的版本旧。我的问题是,这些库是我的Django项目使用的库吗?如果是,我如何操作Django项目的库?我一直认为通过PyCharm导入和导出库会改变我项目的库。另外,在PyCharm中设置为项目解释器的解释器是否不是Django项目使用的解释器?@icyfire是的,我通过PyCharm安装了枕头。我转到首选项,项目解释器,然后单击“+”按钮安装了枕头。这是向Django项目添加库的正确方法吗?