2013-12-24 19 views
1

使用Ubuntu 13.10,蟒蛇2.7.5:當升級Python圖像庫(PIL),它告訴我 「JPEG支持不可用」

>>> import _imaging, Image 
>>> from PIL import Image, ImageDraw, ImageFilter, ImageFont 
>>> im = Image.new('RGB', (300,300), 'white') 
>>> draw = ImageDraw.Draw(im) 
>>> font = ImageFont.truetype('arial.ttf', 14) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 218, in truetype 
    return FreeTypeFont(filename, size, index, encoding) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 134, in __init__ 
    self.font = core.getfont(file, size, index, encoding) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 34, in __getattr__ 
    raise ImportError("The _imagingft C module is not installed") 
**ImportError: The _imagingft C module is not installed** 
>>> 

那麼,爲什麼會發生這種情況?我該如何解決它?我跟着我發現在this thread底部以下說明:

pip uninstall PIL 
apt-get install libjpeg-dev 
apt-get install libfreetype6-dev 
apt-get install zlib1g-dev 
apt-get install libpng12-dev 
pip install PIL --upgrade 

但同時升級PIL,看看我看到:

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.5+ (default, Sep 19 2013, 13:48:49) 
       [GCC 4.8.1] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
*** JPEG support not available 
*** ZLIB (PNG/ZIP) support not available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 

是否正常支持所有這些項目可用?我該如何解決這個問題?

+0

這可能值得看看AskUbuntu而不是這裏。例如,[這個問題](http://askubuntu.com/questions/156484/how-do-i-install-python-imaging-library-pil)是一個類似的,但Ubuntu的具體問題(儘管它也是一個有點過時了,因爲它似乎仍然建議PIL而不是Pillow)。 – abarnert

+0

同時,如果Ubuntu有一個Pillow軟件包(不管是'python-imaging'是否已經更新,或者是一個名爲'python-pillow'的新軟件包),你可能想使用它來代替'pip'(假設你'重新安裝到默認的Ubuntu Python中)。 – abarnert

+0

而Ubuntu _does_有一個Pillow包:在你的Ubuntu版本中,'python-imaging' 1.1.7 + 2.0.0-1ubuntu1是Pillow 2.0.0。 (奇怪的版本號是填充其他各種認爲他們需要PIL 1.1.7的軟件包的先決條件。)所以,就這麼做。 – abarnert

回答

9

PIL已基本死亡,分叉Pillow真的是你應該使用的。你需要通過

from PIL import Image, ... 

它維護所有的PIL的功能,並增加了更多的事情,包括Python 3兼容性將其導入。此外,它正處於積極的發展階段,與PIL不同,所以您發現的任何錯誤實際上都有可能得到修復 - 與功能要求相同。

您可以通過運行

pip install Pillow 

(卸載PIL後),安裝它,我相信有一個包,Ubuntu的,但我的虛擬機是給我頭疼的時刻,我不能檢查...

+0

+1。此外,'Pillow'文件支持JPEG支持所需的全部是'libjpeg'版本6b,8或9; 'PIL'從來沒有清楚地記錄你需要什麼,這是一個「安裝所有似乎相關並且交叉手指的東西」的問題...... – abarnert

+0

謝謝!我安裝了枕頭,它看起來一切正常.... 除了:現在驗證碼出現,但它基本上是不可讀的:http://predictstat.com/accounts/register –

+0

當你看到一個驗證碼? – MattDMo

1

根據this question at AskUbuntu

事實證明,在APT設施投入在/ usr/lib目錄/ x86_64的Linux的GNU的庫和PIL將在/ usr/lib中/搜索。所以你必須爲PIL創建符號鏈接才能看到它們。

換句話說,PIL顯然不理解現代Ubuntu,或者實際上大多數64位linuxes。


你可能想要做的是:

  • 切換到枕頭的MattDMo表明,
  • 使用Ubuntu的軟件包PIL(python-imaging),而不是試圖通過pip,或
  • 安裝
  • 兩個都使用一個Ubuntu包枕頭,如果有的話。

檢查packages.ubuntu.compython-imaging包事實上是在Saucy(13.10)的枕頭2.0.0。事實上,任何事情都會發生在枕頭上或以後;只有仍在使用12.x或更早版本的人才會與PIL卡住。所以,如果你只是這樣做:

$ sudo pip uninstall PIL 
$ sudo apt-get install python-imaging 

...,將讓你枕頭,並在需要的任何依賴關係,所有的拉一步到位。


如果你不想做任何這些,你首先應該重新考慮這一決定,因爲它可能是一個錯誤,然後再看對答案提出的解決方法。特別是,將你安裝到你的/ usr/lib目錄下的庫解釋成你想要的。因此,舉例來說:

$ sudo pip uninstall PIL 
$ sudo apt-get install libjpeg-dev 
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so 
$ # repeat for the various other libraries, but JPEG is the one you asked about 
$ sudo pip install PIL 

或者,你可能補丁 PIL本身,一些關於鏈接的問題顯示的答案。特別是,添加以下兩行:

add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu") 
add_directory(library_dirs, "/lib/x86_64-linux-gnu") 

...那加/usr/local/lib/usr/lib行之後。

但是,如果您打算使用補丁PIL,爲什麼不使用Pillow,它已經解決了這個問題以及其他許多問題?

+0

所以它看起來像Ubuntu包'python-imaging'仍然是PIL。噢,總有一些點子:) – MattDMo

+0

@MattDMo:我實際上沒有Ubuntu,但是我已經看到至少有兩個其他發行版將'python27-imaging'作爲PIL,但爲Pillow添加了一個新的'python27-pillow'。 (當然,其中一個有一個很好的錯誤,其中'python27-pillow'既沒有廢棄python27-imaging也沒有提供抽象的必要條件......但這是一個很容易修復的錯誤,與「請爲枕頭添加一個包」功能請求。) – abarnert

+0

@MattDMo:實際上,看[這裏](http://packages.ubuntu.com/raring/python-imaging),它看起來像Ubuntu的'python-imaging'是枕邊和後來的,只有真正的PIL量子和更早。由於OP使用13.10,這很有趣,他應該沒問題。 – abarnert

相關問題