2014-09-04 93 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 

之後,我的問題解決了!