2010-10-25 77 views
69

我試過很多在網上發佈的解決方案,但它們不起作用。Python:_imagingft C模塊未安裝

>>> import _imaging 
>>> _imaging.__file__ 
'C:\\python26\\lib\\site-packages\\PIL\\_imaging.pyd' 
>>> 

,以便系統可以找到_imaging但仍然無法使用TrueType字體

from PIL import Image, ImageDraw, ImageFilter, ImageFont 


im = Image.new('RGB', (300,300), 'white') 
draw = ImageDraw.Draw(im) 
font = ImageFont.truetype('arial.ttf', 14) 
draw.text((100,100), 'test text', font = font) 

引發此錯誤:

ImportError: The _imagingft C module is not installed 

File "D:\Python26\Lib\site-packages\PIL\ImageFont.py", line 34, in __getattr__ 
    raise ImportError("The _imagingft C module is not installed") 

回答

55

你安裝PIL未經libfreetype建立編譯。

你可以得到PIL的預編譯安裝程序(與libfreetype建立編譯)這裏(和許多其他預編譯的Python C模塊):

http://www.lfd.uci.edu/~gohlke/pythonlibs/

+4

它可以在Linux上使用嗎?我只看到了.exe文件:< – user483144 2010-10-25 03:27:19

+1

如果你想要linux二進制文件,你將不得不從你的發行版的軟件庫中獲取它。 – Imran 2010-10-25 03:40:36

+0

這正是我需要在Windows上獲得TTF支持的原因。加載_imagingft.pyd時,官方頁面上的PIL二進制文件遇到了sxs問題。謝謝! – 2010-10-25 05:49:30

69

在Ubuntu,你需要在編譯PIL之前安裝libfreetype建立-dev的。

$ sudo apt-get install libfreetype6-dev 
$ sudo -s 
\# pip uninstall pil 
\# pip install pil 

PS!作爲sudo運行pip install通常會在大多數Ubuntu版本上將軟件包安裝到/ usr/local/lib。您可以考慮在用戶擁有的路徑中將Pil安裝在虛擬環境(virtualenv或venv)中。

你也可以考慮安裝pillow而不是pil,我相信它是API兼容的:https://python-pillow.org

+0

非常感謝!它立即幫助我! – 2011-11-01 12:03:50

+0

「aptitude install aptitude install」有錯誤;) – anders 2012-06-14 11:46:38

+11

這對我不起作用(Ubuntu 12.04,pip 1.1.7,Python 2.7)。我卸載了pip,apitude安裝了libfreetype6-dev,然後運行了'sudo pip install --upgrade pil',但問題依然存在。 – 2012-12-12 00:41:49

0

Ubuntu 11.10安裝遵循多拱規範的zlib和freetype2庫(例如/usr/lib/i386-linux-gnu)。您可以使用PIL設置環境變量,以便可以找到它們。但它只能在pil-117標籤之外的PIL版本上運行。

export PIL_SETUP_ZLIB_ROOT=/usr/lib/i386-linux-gnu 
export PIL_SETUP_FREETYPE_ROOT=/usr/lib/i386-linux-gnu 
pip install -U PIL 

既然你連拱路徑可能不同(X86-64),這是最好安裝-dev包和使用pkg-config檢索正確的路徑。

pkg-config --variable=libdir zlib 
pkg-config --variable=libdir freetype2 

巴里對枕頭的setup.py給出的另一種方法是使用dpkg-architecture -qDEB_HOST_MULTIARCH以獲得正確的庫目錄後綴。

https://bitbucket.org/effbot/pil-2009-raclette/issue/18

2

對於OS X(我跑10.6,但應該爲別人打工)我是能夠使用建議從this post來解決這個錯誤。基本上你需要安裝一些依賴,然後重新安裝PIL。

14

在OS X中,我這樣做是爲了解決問題:

pip uninstall PIL 
ln -s /usr/X11/include/freetype2 /usr/local/include/ 
ln -s /usr/X11/include/ft2build.h /usr/local/include/ 
ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/ 
ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib 
pip install PIL 
+1

沒有爲我工作 - 每行後'ln -s ...'我有'ln:/usr/local/lib/libfreetype.dylib:文件存在'。問題依然存在。你有更多的想法嗎? – scubbo 2013-02-04 05:14:02

+0

你會嘗試'ln -sf'嗎? 'f'會覆蓋現有文件,因此請確保備份現有文件。 – suzanshakya 2013-02-04 10:29:27

+0

剛剛嘗試過'ln -sf',建議。在第一行這樣的行之後,我得到了'ln:/ usr/local/include // freetype2:操作不允許'。用'sudo'重複這個操作給出了同樣的錯誤。 – scubbo 2013-02-04 18:13:41

12

基本上,你需要安裝PIL之前安裝的FreeType。

如果您在OS X上使用Homebrew它只是一個事:

brew remove pil 
brew install freetype 
brew install pil 
+0

如果它不起作用,請在安裝PIL之前添加'brew link freetype'。 – user805627 2012-10-09 21:37:28

+1

該軟件包也被稱爲'freetype'用於macports用戶。 – DanH 2013-02-21 06:02:43

+1

我必須通過brew重新安裝'freetype'和'libjpeg',然後使用'brew link --overwrite freetype'和'brew link --overwrite libjpeg'重新鏈接它們,然後重新安裝'pil',然後它終於工作。希望這可以幫助任何人 – rednaw 2013-06-20 14:23:20

12

就職於Ubuntu的12。10:

sudo pip uninstall PIL 
sudo apt-get install libfreetype6-dev 
sudo apt-get install python-imaging 
+0

工作完美,謝謝! – 2013-06-18 16:19:52

+2

我將第三行從「sudo apt-get install python-imaging」更改爲「pip install PIL」,它工作正常。 – zephyr 2013-07-08 23:55:21

+0

爲我工作,ubuntu12.04,django1.7,謝謝! – 2014-10-22 14:21:45

16

爲CentOS 6液(也可能是其他基於RPM):

yum install freetype-devel libjpeg-devel libpng-devel 

pip uninstall pil Pillow 
pip install pil Pillow 
+0

使用第一個命令安裝* devel,然後使用「yum」(在epel存儲庫中)安裝python-imaging以獲取圖像顯示。 – fanchyna 2014-10-23 19:17:06

2

的後跟在Ubuntu 12.04的作品:

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 

,當你看到「 - JPEG支持可用「,這意味着它的作品。

但是,如果編輯jpeg圖像時仍不起作用,請檢查python路徑!
我的Python路徑錯過'/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/',所以我編輯~/.bashrc下面的代碼添加到該文件:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ 

然後,最後,它的作品!

1

我用自制安裝FreeType的和在/ usr/local/lib目錄我有以下幾點:

libfreetype.6.dylib libfreetype.a libfreetype.dylib

但平常:

pip install pil

不爲我工作,所以我用:

pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz

+0

第二個選項適合我。謝謝@tc_geophysics – MegaBytes 2016-01-20 06:14:04

-1

【解決】
在我的ubuntu12.04中,我使用apt-get安裝了python-imaging,它起作用了。

2

對我而言,迄今爲止在這裏發佈的解決方案都沒有奏效。我在這裏找到另一種解決辦法:http://codeinthehole.com/writing/how-to-install-pil-on-64-bit-ubuntu-1204/

首先安裝開發包:

$ sudo apt-get install python-dev libjpeg-dev libfreetype6-dev zlib1g-dev 

然後創建一些符號鏈接:

$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/ 
$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/ 
$ sudo ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/ 

之後PIL應該編譯就好了:

$ pip install PIL --upgrade 
40

以下在Ubuntu 14.04.1 64位上爲我工作:

sudo apt-get install libfreetype6-dev 

然後,在virtualenv中:

pip uninstall pillow 
pip install --no-cache-dir pillow 
+1

感謝您的緩存!另外,我們可以在重新安裝Pillow之前刪除pip緩存:rm -rf〜/ .cache/pip – Vermus 2016-01-19 08:25:54

+2

只需在CentOS 6中註釋:yum install freetype-devel libjpeg-devel libpng-devel – azuax 2016-06-22 13:21:41

1

在我的Mac,在終端以下步驟工作:

$ brew install freetype 
$ sudo pip uninstall pil 
$ sudo pip install pillow 

希望它爲你工作。祝你好運!