python/django - "因为没有安装Pillow所以无法使用ImageField"

lap*_*pin 12 python django pip pillow

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

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

然后我想构建数据库:

python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

繁荣,错误,我得到以下:

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".
Run Code Online (Sandbox Code Playgroud)

...就像我没有安装枕头.所以我检查了已安装的软件包(使用技术),并Pillow 2.4.0安装了IS.

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

但是,无所事事,我在运行时遇到同样的错误migrate.

我正在使用python 3.4.0django 1.7.0在mac OS X 10.6.7上virtualenv 1.11.6用pip降级为pip 1.2.1(由于pip和ssl 的一些众所周知但尚未完全解析也未理解的问题).

上面的所有代码都在virtualenv(bin/activate完成)中.

您对此问题的原因以及解决方法有什么想法吗?

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

当我运行上面的force-reinstall命令时,(这么多代码都被打败了,我不能把它全部粘贴掉)尽管它以"成功安装的枕头"完成,但代码中有一些警告:

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.
Run Code Online (Sandbox Code Playgroud)

Pat*_*gan 20

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

pip uninstall Pillow
pip install Pillow==5.0.0
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢!这实际上在尝试了几种方法后解决了我的问题 但是为什么Pillow5.1.0引起了这个问题呢? (3认同)

lap*_*pin 5

我试过了 :

  • 通过使用这里的一些说明编译"Imaging-1.1.7"来重新安装globaly PIL ,但是没有用
  • 使用该链接全局重新安装Pillow及其依赖关系,但无法正常工作
  • 使用此链接重新安装GCC4.2 ,但它不起作用

我终于想通了我在这篇文章的精彩回答中描述的情况.换句话说,我正在运行一个mac,其CPU能够达到64位,但其内核固件设置为32位.这是一个问题,因为我正在研究的项目是为64位构建的.

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

cd Python-3.4.1
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

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

file /usr/local/bin/python3
/usr/local/bin/python3: Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

这样做,所有问题都在使用这个64位版本的python3的virtualenv中的PIL/Pillow消失了.即使点数降级也没必要了.


MD *_*ouq 5

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

 sudo pip uninstall PIL

 sudo pip uninstall Pillow

 sudo pip install Pillow
Run Code Online (Sandbox Code Playgroud)

之后我的问题就解决了!