python/django - “无法使用 ImageField,因为没有安装 Pillow”

Posted

技术标签:

【中文标题】python/django - “无法使用 ImageField,因为没有安装 Pillow”【英文标题】:python/django - "Cannot use ImageField because Pillow is not installed" 【发布时间】:2014-10-29 00:03:00 【问题描述】:

我正在加入一个项目,所以我想设置环境,所以我所做的是:

pip install -r requirements.txt

这完全安装了所有要求,包括 django 1.7.0、Pillow 2.4.0 和其他一些。

那我要建数据库:

python manage.py migrate

然后繁荣,错误,我得到以下信息:

CommandError: System check identified some issues:

ERRORS:
stu.chan.icon: (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".
stu.chan.image: (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".
stu.Piec.icon: (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".

...就像我没有安装 Pillow 一样。 所以我检查了安装的包(使用this技术),并安装了Pillow 2.4.0 IS。

然后,我也尝试强制重新安装:pip install --upgrade --force-reinstall Pillow==2.4.0

但是,我在运行migrate 时遇到了同样的错误。

我在 Mac OS X 10.6.7 上使用 python 3.4.0django 1.7.0 包装在 virtualenv 1.11.6 中,pip 降级为 pip 1.2.1(因为一些众所周知但尚未完全解决的问题-也不理解 issue 与 pip 和 ssl)。

以上所有代码都在 virtualenv 中 (bin/activate done)。

您对为什么会出现这个问题以及如何解决它有任何想法吗?

- - - - - - 编辑 - - - - - -

当我运行上面的 force-reinstall 命令时,(输出了很多代码,我无法全部粘贴,但是)虽然它以“成功安装 Pillow”结束,但代码中有一些警告:

building 'PIL._imaging' extension
 (blabla code)
    _imaging.c:975:13: warning: array index of '1' indexes past the end of an array (that contains 1 elements) [-Warray-bounds]
        value = PyTuple_GET_ITEM(xy, 1);
                ^~~~~~~~~~~~~~~~~~~~~~~
    /usr/local/include/python3.4m/tupleobject.h:58:34: note: instantiated from:
    #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
                                     ^
    /usr/local/include/python3.4m/tupleobject.h:27:5: note: array 'ob_item' declared here
        PyObject *ob_item[1];
        ^
    1 warning generated.

(blabla code)
   libImaging/Unpack.c:867:1: warning: unused function 'copy3' [-Wunused-function]
    copy3(UINT8* out, const UINT8* in, int pixels)
    ^
    1 warning generated.

【问题讨论】:

您在安装枕头时遇到任何错误..? 我更新了问题。请在安装过程中查看警告。 使用sudo没有警告? 你安装了 PIL 吗?有时需要先卸载PIL,再安装pillow。 @rajasimon : 与 sudo 相同的警告,因为我在 virtualenv 中 【参考方案1】:

我在使用 Python 3.6.4 的 Mac 上遇到了这个问题。解决方案是卸载 Pillow 5.1.0,然后安装 5.0.0。

pip uninstall Pillow
pip install Pillow==5.0.0

【讨论】:

非常感谢!在尝试了几种方法后,这实际上解决了我的问题。但是为什么 Pillow5.1.0 会导致这个问题呢?【参考方案2】:

我试过了:

使用一些指令here 编译“Imaging-1.1.7”重新安装全局 PIL,但没有用 使用 that link 在全局范围内重新安装 Pillow 及其依赖项,但不起作用 使用this link重新安装GCC4.2,但没有成功

我终于发现我在this post 的精彩回答中描述的情况。换句话说,我正在运行一台 CPU 支持 64 位但内核固件设置为 32 位的 mac。这是一个问题,因为我正在处理的项目是为 64 位构建的。

正如that post 中所解释的,当您使用安装程序 (DMG) 安装 python3 时,它会嗅探内核是否设置为 32 位并相应地安装 32 位版本的 python 3。但如果你只是从 python 的网站下载 tarball 源代码并安装它:

cd Python-3.4.1
./configure
make
sudo make install

然后应该安装64位版本的python3。您可以通过以下方式进行验证:

file /usr/local/bin/python3
/usr/local/bin/python3: Mach-O 64-bit executable x86_64

完成后,使用这个 64 位版本的 python3 的 virtualenv 中的 PIL/Pillow 解决了所有问题。甚至点子降级也变得不必要了。

【讨论】:

PIL 需要 64 位而不是 32 位?【参考方案3】:

我在使用 CLoudinary 实现图像上传时也遇到了同样的问题,但是找到了上面的答案,但是以其他方式。

 sudo pip uninstall PIL

 sudo pip uninstall Pillow

 sudo pip install Pillow

在那之后我的问题解决了!

【讨论】:

【参考方案4】:

遇到了类似的问题,我的解决方案要简单得多:

显然包 PIL 和 Pillow 不能共存。 如果你想使用 Pillow,你必须先卸载 PIL,然后再安装 Pillow

如果您使用的是 Mac,您还必须使用 brew 安装一些库。下面提到的是步骤顺序:

$pip uninstall PIL
$brew install libtiff libjpeg webp little-cms2
$pip install Pillow

要测试枕头是否已安装并可以使用,请打开 python 解释器并尝试导入以下内容:

>>> from PIL import Image

*请注意,库仍然显示 PIL,但现在它是从 Pillow 而不是 PIL 导入的。

如果您能够成功导入,那么您就可以开始了(很可能您不必担心设置 PYTHONPATH 或 32/64 位安装)

来源:https://pillow.readthedocs.io/en/latest/installation.html

【讨论】:

评论“测试是否安装了枕头 [...] from PIL import Image”非常有帮助 - 在我的情况下,它返回有关与 libjpeg 相关的 ImportError 的更详细的调试信息。【参考方案5】:

我不知道为什么,但是卸载然后重新安装 Pillow(相同版本)为我解决了这个问题。

python -m pip uninstall Pillow
python -m pip install Pillow

Pillow 版本是 7.1.1。

【讨论】:

【参考方案6】:

我在使用 PyCharm 的调试器时遇到了这个错误。我必须去设置->“项目解释器”突出显示“枕头”,然后点击右边的小向上箭头来升级它。然后错误消失了。

【讨论】:

【参考方案7】:

由于某种原因,

pip install pillow

没有工作。 于是就去枕头的官网用了

python -m pip install --upgrade pillow

解决了我安装枕头的问题。

【讨论】:

【参考方案8】:

在您的 'site-packages' 文件中,下载所需的枕头 (.whl) 文件,然后使用命令 'pip install "directory"' 安装它。

我已经看到这个错误是由于枕头版本错误造成的,就我的情况而言是位安装。

如果您有 32 位机器,则必须下载 32 位 Pillow。 如果您有 64 位机器,则必须下载 64 位 Pillow。

就我而言,我使用的是 Visual Studio,但是当我尝试使用 PyCharm 安装 Pillow 时,它会自动下载并安装合适的 Pillow 版本,而 Visual Studio 并没有自动完成这项工作。

当我尝试通过卸载安装 Pillow 时,Visual Studio 多次安装错误版本的 Pillow。 我猜它基本上是从缓存文件中获取 .whl 文件。

【讨论】:

【参考方案9】:

对于那些在 docker 中使用基于 alpine 的图像遇到此问题的人;

Pillow 需要这些操作系统级别的模块(用于安装)

gcc 音乐开发 JPEG 开发 zlib-开发 libjpeg

你可能会在安装你的 python 包后删除这些模块,但是,为了使用 Pillow 没有问题,它需要 libjpeg 除非,Django 引发错误:

无法使用 ImageField,因为没有安装 Pillow。

所以在 Dockerfile 中添加这个模块(或者不要卸载):

RUN apk add libjpeg

为我工作

【讨论】:

这不清楚。你一开始列出了几个需要的包,但剩下的答案听起来像只需要libjpeg 在 Dockerfile 中我们添加了一些模块来安装我们的 python 包。安装 python 包后,我们删除这些 os 级别的模块以减小容器的大小。因为我们在安装软件包后通常不需要它们。但就我而言,即使我已经安装了,我也遇到了错误“枕头未安装..”。 Django 无法识别枕头,因为它依赖于 libjpeg 才能使用(不仅安装,还使用)。解决方案是不要删除 Dockerfile 中的 libjpeg 模块(或者在清除我提到的模块后再次添加)。 @user17242583【参考方案10】:

对于 python3,请确保您的 $PYTHONPATH 具有 virtualenv 路径和 而不是运行命令

python manage.py migrate

运行:

python3 manage.py migrate

【讨论】:

【参考方案11】:

macOS High Sierra 10.13.6 我的解决方案是

pip3 install Pillow

没有

pip install Pillow

【讨论】:

【参考方案12】:

如果您将 Pillow 4.1.0 与 Python 3.6.0 一起使用,则升级 Python 版本将解决此问题。 在这里找到解决方案:https://github.com/python-pillow/Pillow/issues/2479#issuecomment-292252147

【讨论】:

【参考方案13】:

即使安装了 Pillow,我在虚拟环境中也遇到了同样的问题。安装较低版本也无济于事。我一离开我的虚拟环境,它就起作用了。也许这对某人有帮助。

有命令:

    (wb_env) C:\Users\Taranis\Dropbox\08_Coding\Python 
    Coding\Programme\Projekt_Webblog\tim_webblog>python manage.py makemigrations app_webblog

错误:

    SystemCheckError: System check identified some issues:

    ERRORS:
    app_webblog.BlogEntry.entry_img: (fields.E210) Cannot use ImageField because 
    Pillow is not installed.
    HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "pip install 
    Pillow".

【讨论】:

【参考方案14】:

对我有用的是从用户文件夹中卸载 Pillow 并使用 sudo 安装它。

初始安装是:

$ pip3 install Pillow --user

安装到:~/.local/lib/python3.7/site-packages/Pillow-7.0.0.dist-info

所以先卸载了再用sudo安装:

$ pip3 uninstall Pillow
$ sudo pip3 install Pillow

新位置:/usr/local/lib64/python3.7/site-packages/Pillow-7.0.0.dist-info,问题已修复。

【讨论】:

【参考方案15】:

窗口用户

首先卸载 Pip

pip uninstall Pillow

然后重新安装

pip install Pillow

Ubuntu 用户

首先卸载 Pip

sudo pip uninstall Pillow

然后重新安装

sudo pip install Pillow

希望对你有用

【讨论】:

【参考方案16】:

这对我有用,

sudo apt-get install libjpeg-dev -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install libfreetype6-dev -y
sudo apt-get install liblcms1-dev -y
sudo apt-get install libopenjp2-7 -y
sudo apt-get install libtiff5 -y

您可能安装了其中的一些,但不是全部。对我来说,其中一些不是,这就是问题所在。

【讨论】:

【参考方案17】:

您可能会收到 ModuleNotFoundError: No module named 'pillow'

这可能是因为您在 settings.py

中将其添加到了 installed_apps

解决这个问题:

只需将其从 installed_apps 中删除或将其更改为“PIL”

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # installed apps
    'pillow',
]

到这里:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # installed apps
    'PIL',
]

如果你只是把它注释掉,

# 'pillow'

你仍然会得到 ModuleNotFoundError: No module named 'pillow'

所以一定要彻底删除它。

【讨论】:

【参考方案18】:

如果您使用 lite 操作系统在树莓上进行编码,这修复了我的错误:

sudo apt-get install libopenjp2-7-dev

祝你好运;)

【讨论】:

【参考方案19】:

遇到类似问题,我在虚拟环境中运行 django。

pip install Pillow

命令安装了 Pillow 但 django 无法识别它。

这为我解决了这个问题:

python3 -m pip install Pillow

最初,当我尝试使用 python -m 运行 pip 命令时遇到问题 但后来我使用 python3 安装了 pip

  curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

   python3 get-pip.py --force-reinstall

然后跑python3 -m pip install Pillow

【讨论】:

以上是关于python/django - “无法使用 ImageField,因为没有安装 Pillow”的主要内容,如果未能解决你的问题,请参考以下文章

python django怎么添加css-CSDN论坛

python Django

python django choice怎么输出

Python+Django(Python Web项目初体验)

Python Django 1.Hello Django

python django应用中的model啥作用