我目前正在学习如何使用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中使用图像?
答案 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和朋友。解决方案是重新添加相关的(非开发)程序包,然后一切按需开始工作。