Python:未安装_imagingft C模块


74

我尝试了很多发布在网络上的解决方案,但它们不起作用。

>>> 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")

Answers:


57

您安装的PIL编译时没有libfreetype。

您可以在此处获得PIL的预编译安装程序(与libfreetype一起编译)(以及许多其他预编译的Python C模块):

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


1
我想,如果您想要linux二进制文件,则必须从发行版的软件存储库中获取它。
伊姆兰(Imran)2010年

这正是我在Windows上获得TTF支持所需要的。加载_imagingft.pyd时,官方页面上的PIL二进制文件存在sxs问题。谢谢!
MichaelLabbé2010年

如今,您还可以从PyPI(Python软件包索引)获得Pillow 。
martineau

看起来不再有PIL(不是Pillow)。还有其他下载源吗?
2013年

2
@LA_ Pillow是PIL的替代产品
Imran

82

在Ubuntu上,需要在编译PIL之前安装libfreetype-dev。

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

PS!在大多数Ubuntu版本上,以sudo方式运行pip install通常会将软件包安装到/ usr / local / lib。您可能考虑在用户拥有的路径中的虚拟环境(virtualenv或venv)中安装Pil。

您也可以考虑安装枕头而不是pil(我认为它是API兼容的):https : //python-pillow.org。请注意,Pillow还需要libfreetype-dev,如果在初始安装过程中不存在libfreetype-dev,则可能需要遵循相同的卸载/安装步骤。


非常感谢!它立即帮助了我!
Piotr Sobczyk

“ aptitude install aptitude install”中有错误;)
anders 2012年

12
这对我不起作用(Ubuntu 12.04,pip 1.1.7,Python 2.7)。我卸载了pip,先安装了libfreetype6-dev,然后又运行了sudo pip install --upgrade pil,但是问题仍然存在。
马修·弗拉申

2
这对我在Xubuntu上起作用。sudo apt-get安装libfreetype6-dev。然后在我运行的virtualenv中,pip安装Pillow(没有sudo)。您不想在虚拟环境中使用sudo pip。
pymarco

1
供仍然遇到此问题的任何人参考,@ Rafay的使用解决方案pip install --no-cache-dir pillow 可能会有所帮助。
Sindre Myren's

48

以下在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
LennyLip 2016年

2
在CentOS 6中只是一个评论:yum install freetype-devel libjpeg-devel libpng-devel
azuax

17

CentOS 6(可能还有其他基于rpm的解决方案)的解决方案:

yum install freetype-devel libjpeg-devel libpng-devel

pip uninstall pil Pillow
pip install pil Pillow

使用第一个命令安装* devel,然后使用“ yum”(在epel存储库中)安装python-imaging以显示图像。
fanchyna 2014年

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: File exists。问题仍然存在。您还有其他想法吗?
scubbo

你会尝试ln -sf吗?f覆盖现有文件,因此请确保备份现有文件。
suzanshakya

刚刚尝试过ln -sf,如推荐。在第一行这样的代码之后,我得到了ln: /usr/local/include//freetype2: Operation not permitted。重复操作与sudo给出相同的错误。
scubbo

1
@volvox,尝试使用安装freetype brew install freetype
suzanshakya 2014年

1
@suzanshakya谢谢,它工作得很好(一旦我安装了自制软件)。
volvox

12

基本上,您需要在安装PIL之前安装freetype。

如果您在OS X上使用Homebrew,则只需考虑以下事项:

brew remove pil
brew install freetype
brew install pil

如果不起作用,请brew link freetype在安装PIL之前添加。
user805627 2012年

1
该软件包也被freetypemacports用户使用。
DanH

1
我必须重新安装freetypelibjpeg通过brew,然后使用brew link --overwrite freetype和重新链接它们brew link --overwrite libjpeg,然后重新安装pil,然后终于可以了。希望这对任何人
都有

brew install pil返回错误:ImportError: The _imagingft C module is not installed
邓海军2013年

12

适用于Ubuntu 12.10:

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

2
我将第三行从“ sudo apt-get install python-imaging”更改为“ pip install PIL”,它可以正常工作。
zephyr

1
在debian上为我工作,请注意我已经安装了libjpeg-dev zlib1g-dev libpng12-dev
cgl 2014年

2

对于OS X(我跑10.6,但应该为别人打工)我是能够利用的建议来解决这个错误这篇文章。基本上,您需要安装几个依赖项,然后重新安装PIL。


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

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

Ubuntu 11.10按照多架构规范(例如/usr/lib/i386-linux-gnu)安装zlib和freetype2库。您可以使用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

Barry在Pillow的setup.py上给出的另一种方法是dpkg-architecture -qDEB_HOST_MULTIARCH用于获取正确的库目录后缀。

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



1

在我的Mac中,终端机中的以下步骤有效:

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

希望它对您有用。祝好运!


不会sudo pip影响全局pil而不是虚拟环境pil?
Saurabh Ariyan '18年

0

而不是运行: pip install Pillow

跑: pip install Image

达尔文大苏尔pyenv


“ darwin大苏尔pyenv”是什么意思?
鲁里

-1

【解决】
在我的ubuntu12.04中,使用apt-get安装python-imaging后,它可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.