2014-09-04 95 views
7

我加入项目,所以我想成立environnment,所以我所做的是:蟒蛇/ Django的 - “不能用的ImageField因为枕头未安装”

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

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

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

但是,没有运行migrate时候做,我得到了同样的错误。

我在Mac OS X 10.6.7包裹在virtualenv 1.11.6与PIP使用python 3.4.0django 1.7.0降级到pip 1.2.1(因为一些知名尚未未完全解决的,也不是理解的点子与和issue SSL)。

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

你对这个问题的原因以及如何解决它有什么想法吗?

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

当我运行上面的力重新安装命令,(这么多的代码被outpouted我不能粘贴均可)虽然与 “成功安装枕头” 结束,有一个在代码中的一些警告:

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. 
+0

安装枕头时出现任何错误..? – 2014-09-04 11:47:04

+0

我更新了问题。请在安装过程中查看警告。 – lapin 2014-09-04 13:20:21

+0

使用'sudo'没有警告? – 2014-09-04 13:28:48

回答

5

我想:

  • 通过编译 “成像-1.1.7” 重新安装globaly PIL使用S青梅说明here,但没有奏效
  • 重新安装枕头和它的全球使用依赖that link,但使用this link没有工作
  • 重新安装GCC4.2,但没有奏效

我终于发现我在this post的奇妙答案中描述的情况。换句话说,我正在运行一台CPU能够支持64位但其内核固件设置为32位的mac。由于我正在开发的这个项目是为64位打造的,所以这是一个问题。

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

cd Python-3.4.1 
./configure 
make 
sudo make install 

然后应安装python3的64位版本。你可以通过做验证:

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

上述工作完成后,所有问题都使用python3的这64位版本的旷古PIL /枕头中的virtualenv。即便是点差降级也变得没有必要。

1

也有类似的问题,我的解决办法就简单多了:

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

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

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

要测试是否安装了枕头和准备使用的,开放的Python解释器和尝试导入如下:

>>> from PIL import Image 

*注:库仍说PIL,但现在它从枕头进口而不是PIL。

如果能够成功导入,那么你是好去(在所有的可能性,你将不必担心设置PYTHONPATH或六十四分之三十二位安装)

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

+0

评论'测试枕头是否安装[PIL import Image''是非常有帮助的 - 在我的情况下,它返回关于与libjpeg相关的ImportError的更详细的调试信息。 – ptim 2017-11-19 05:55:36

0

我有使用PyCharm的调试器的这个错误。我必须去设置 - >'项目翻译'突出'枕头',并点击右边的小箭头来升级它。然后错误消失了。

0

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

sudo pip uninstall PIL 

sudo pip uninstall Pillow 

sudo pip install Pillow 

之后,我的问题解决了!