2011-12-06 27 views
3

我使用PIP安裝了PIL。然而,在使用上的Django PIL,試圖上傳.jpg文件時,我得到的錯誤:使用PIP安裝PIL的錯誤 - Django,Python

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

我在互聯網上閱讀有關此錯誤和解決辦法是刪除編譯後的文件爲當前的操作系統,然後再次使用setup.py。

但是,由於我使用PIP安裝PIL,因此我沒有setup.py文件夾以及爲我的特定操作系統編譯的文件。這是Mac OSX Lion。

更新:我沒有在我的電腦上安裝libjpeg。我現在擁有它,並且正在嘗試將PIL配置更改爲指向libjpeg庫。

回答

3

如果在沒有jpeg支持的情況下編譯PIL,則會出現此錯誤。當目標目錄不可寫入時,我也得到了這個。

一旦PIL編制,如果你讀

JPEG support not available

庫處理JPEG文件,或它的一部分,是思念。解決這個問題,安裝庫(在我的情況下,它是libjpeg62-dev)並再次運行pip,也許在virtualenv中。如果這還不夠,可能你的系統有一些怪癖。查看this post(ubuntuforums)的修復程序。

+0

是的,問題實際上缺乏jpeg庫。什麼是在Mac上安裝它們的有效方式? –

+2

@Vasco行。選中此項:[在Mac OS X上安裝PIL以與Django一起使用](http://stackoverflow.com/questions/5075620/installing-pil-to-use-with-django-on-mac-os-x)。下一次在你的問題中更準確! – Paolo

+0

你說得對。感謝您的支持 –

11

PIL在安裝過程中需要找到libjpeg和libz等庫。

我們遇到了我們的服務器在同一個問題,我們安裝PIL全系統使用

aptitude install python-imaging 

這是一個快速解決方案,它爲我們工作。

同時使用PIL搜索這個問題的兩種方法如何解決這個問題。

first onelibjpeg.so,從/usr/lib/x86_64-linux-gnu/libfreetype.solibz.so符號鏈接到/usr/lib

second one是使用PIP --no-install鍵下載包,然後改變setup.py把正確的路徑有

1. Call 'pip install -I pil --no-install' to download and unpack the PIL source into your build directory; 
2. Get into your build directory and edit setup.py; 
3. Find the line that says 'add_directory(library_dirs, "/usr/lib")' (line 214 here); 
4. Add the line 'add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu/")' afterwards; 
5. Call 'pip install -I pil --no-download' to finish the installation. 

如果您有i386 arch使用i386-linux-gnu而不是x86_64-linux-gnu

+0

感謝您的寶貴意見。我寧願通過aptitude之類的自動安裝程序來安裝它,而不是編譯這些庫。 但是,什麼是適用於Mac OS的aptitude? –

+0

也適用於Ubuntu。 –

1

安裝在您的系統上的適合的jpeg解碼器

檢查this guide以瞭解如何在Ubuntu/Virtualenv上運行PIL

+0

謝謝。我沒有太多關於PIL的知識,因此在沒有以前的jpeg庫安裝的情況下安裝。 –

2

我的修復方法是確保在安裝PIL的pip之前安裝了libjpeg-dev和libpng-dev軟件包。

命令和apt-get安裝的libjpeg-dev的的libpng-dev的

可能會做。然後,pip從源代碼獲取PIL,編譯時支持jpeg和png。

+0

謝謝您的寶貴答案。但是,什麼是Mac OS X的apt-get的等價物?或者,一般來說,我可以從安裝程序中獲取這些庫,而不必編譯它們? –

+0

使用'brew'(自制)或'port'(macports)。 –

4

如果你使用pip和virtualenv,那麼就沒有必要混淆系統路徑。通過PIP安裝

PIL對x86_64的

很難找到在Ubuntu 12.10(和一些更早的版本)的相關庫來解決:

# commands for recent debian/ubuntu 
sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev 

for i in libjpeg.so libfreetype.so libz.so 
    do ln -s /usr/lib/x86_64-linux-gnu/$i $VIRTUAL_ENV/lib/ 
done 
pip uninstall pil 
pip install pil 
+0

謝謝大家,在嘗試了一堆解決方案之後,終於開始工作了。 –