2012-07-27 50 views
6

我正在運行Django 1.4PIL 1.1.7virtualenvpip管理。每當我通過我的管理界面上傳JPEG文件,我得到以下錯誤:Upload a valid image. The file you uploaded was either not an image or a corrupted image.讓Django識別PIL JPEG支持

正如很多Ubuntu的用戶報告,在安裝時,PIL erronously看着/usr/lib/libjpeg,而其真正的位置是/usr/lib/i386-linux-gnu/。這被照顧了;我跟着這些職位的答案:

Django ImageField "Upload a valid image. The file you uploaded was either not an image or a corrupted image."

Why can't I upload jpg files to my Django app via admin/?

現在安裝的最後輸出如下:


PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.3 (default, Apr 20 2012, 22:44:07) 
       [GCC 4.6.3] 
-------------------------------------------------------------------- 
--- TKINTER support available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

To check the build, run the selftest.py script. 
changing mode of build/scripts-2.7/pilfile.py from 644 to 755 
changing mode of build/scripts-2.7/pilfont.py from 644 to 755 
changing mode of build/scripts-2.7/pilconvert.py from 644 to 755 
changing mode of build/scripts-2.7/pilprint.py from 644 to 755 
changing mode of build/scripts-2.7/pildriver.py from 644 to 755 

changing mode of /usr/local/bin/pilfile.py to 755 
changing mode of /usr/local/bin/pilfont.py to 755 
changing mode of /usr/local/bin/pilconvert.py to 755 
changing mode of /usr/local/bin/pilprint.py to 755 
changing mode of /usr/local/bin/pildriver.py to 755 
Successfully installed PIL 

然而,Django的 doesn不允許我上傳除BMP文件以外的任何內容,這是本項目無法接受的。與第二個鏈接中的用戶不同,我沒有使用Apache,所以我的問題可能不相關。我懷疑Django仍在使用舊的PIL安裝。問題是我不知道從哪裏得到它。 ~/.virtualenvs/project/local/lib/python2.7/site-packages中的文件對我來說似乎是最新的。有任何想法嗎?

編輯1:另外請注意,我已經嘗試註銷並且管理員重新登錄,以及在這個崗位上安裝pillow,如:Uploading a JPEG image via Django displays error

+0

您是否嘗試安裝[Pillow](http://pypi.python.org/pypi/Pillow)而不是PIL?檢查你的sys.path – jterrace 2012-07-27 16:47:43

+0

你可以上傳你的模型嗎? – nicowernli 2012-07-27 16:53:52

+0

@jterrace:是的。並且該安裝還告訴我可以使用JPEG支持。 – novembrine 2012-07-27 16:55:10

回答

2

事實證明,這件事是我的錯,由於誤解如何pip實際工作。按照習慣,我將任何和所有安裝與超級用戶權限相關聯,這不僅在這種情況下不是必需的,而且是混淆的方法。

我第一次安裝PIL,我沒有sudo前綴,但我以後每次都做到了。因此,從Meitham的建議開始,我檢查了進口的來源。它來自正確的位置,但它沒有我想要的擴展名,儘管安裝後的輸出說我做了。長話短說,我從我的網站包中刪除了目錄,然後pip freeze繼續告訴我,我沒有PIL,但sudo pip install告訴我,我做到了。

獲得的經驗教訓:virtualenv是基於用戶的目錄,對用戶的權限。在將sudopip組合在相同的命令中之前考慮兩次。