Python:未安装 _imagingft C 模块

Posted

技术标签:

【中文标题】Python:未安装 _imagingft C 模块【英文标题】:Python: The _imagingft C module is not installed 【发布时间】:2011-04-30 00:41:43 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

在 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。您可以考虑将 Pil 安装在用户拥有的路径中的虚拟环境(virtualenv 或 venv)中。

您也可以考虑安装枕头而不是 pil,我认为它与 API 兼容:https://python-pillow.org。请注意,Pillow 还需要 libfreetype-dev,如果在初始安装期间没有 libfreetype-dev,您可能需要执行相同的卸载/安装步骤。

【讨论】:

非常感谢!它立即帮助了我! “aptitude install aptitude install”中有错误;) 这对我不起作用(Ubuntu 12.04,pip 1.1.7,Python 2.7)。我卸载了pip,apitude安装了libfreetype6-dev,然后运行sudo pip install --upgrade pil,但问题依旧。 这在 Xubuntu 上对我有用。 sudo apt-get 安装 libfreetype6-dev。然后在我的 virtualenv 中运行,pip install Pillow(不带 sudo)。您不想在虚拟环境中使用 sudo pip。 对于仍然遇到此问题的任何人的参考,@Rafay 使用pip install --no-cache-dir pillow 的解决方案可能会有所帮助。【参考方案2】:

您安装的 PIL 是在没有 libfreetype 的情况下编译的。

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

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

【讨论】:

如果你想要 linux 二进制文件,我猜你必须从发行版的软件存储库中获取它。 这正是我在 Windows 上获得 TTF 支持所需要的。官方页面上的 PIL 二进制文件在加载 _imagingft.pyd 时出现 sxs 问题。谢谢! 现在你也可以从PyPI - the Python Package Index获得枕头。 看起来没有 PIL(不是 Pillow)了。有没有其他来源可以下载? @LA_ Pillow 是 PIL 的替代品【参考方案3】:

以下内容在 Ubuntu 14.04.1 64 位上对我有用:

sudo apt-get install libfreetype6-dev

然后,在 virtualenv 中:

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

【讨论】:

感谢缓存!另外,我们可以在重新安装 Pillow 之前删除 pip 缓存: rm -rf ~/.cache/pip 只是一个评论,在 CentOS 6 中:yum install freetype-devel libjpeg-devel libpng-devel【参考方案4】:

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

yum install freetype-devel libjpeg-devel libpng-devel

pip uninstall pil Pillow
pip install pil Pillow

【讨论】:

使用第一个命令安装 *devel,然后使用“yum”(在 epel 存储库中)安装 python-imaging 以显示图像。【参考方案5】:

在 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

【讨论】:

对我不起作用 - 在每行 ln -s ... 之后我得到了 ln: /usr/local/lib/libfreetype.dylib: File exists。问题仍然存在。你还有什么想法吗? 你会试试ln -sf吗? f 会覆盖现有文件,因此请务必备份现有文件。 刚试过ln -sf,按照推荐。在第一行之后,我得到了ln: /usr/local/include//freetype2: Operation not permitted。使用sudo 重复该操作会出现同样的错误。 @volvox,尝试使用brew install freetype 安装freetype。 @suzanshakya 感谢它完美地工作(一旦我安装了自制软件)。【参考方案6】:

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

如果您在 OS X 上使用 Homebrew,只需:

brew remove pil
brew install freetype
brew install pil

【讨论】:

如果不起作用,请在安装PIL之前添加brew link freetype 对于 macports 用户,该软件包也称为 freetype 我不得不通过brew重新安装freetypelibjpeg,然后使用brew link --overwrite freetypebrew link --overwrite libjpeg重新链接它们,然后重新安装pil,然后它终于工作了。希望这对任何人都有帮助 brew install pil 返回错误:ImportError: The _imagingft C module is not installed【参考方案7】:

适用于 Ubuntu 12.10:

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

【讨论】:

我将第三行从“sudo apt-get install python-imaging”更改为“pip install PIL”,它成功了。 在 debian 上为我工作,注意我已经安装了 libjpeg-dev zlib1g-dev libpng12-dev【参考方案8】:

对于 OS X(我运行的是 10.6,但应该适用于其他系统)我能够使用来自 this post 的建议来解决此错误。基本上你需要安装几个依赖项,然后重新安装 PIL。

【讨论】:

【参考方案9】:

对我来说,到目前为止,这里发布的解决方案都没有奏效。我在这里找到了另一个解决方案: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

【讨论】:

【参考方案10】:

以下作品在 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/

然后,终于,它起作用了!

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

我使用 homebrew 安装 freetype,我在 /usr/local/lib 中有以下内容:

libfreetype.6.dylib libfreetype.a libfreetype.dylib

但通常:

pip 安装 pil

不适合我,所以我用了:

点安装http://effbot.org/downloads/Imaging-1.1.6.tar.gz

【讨论】:

第二个选项对我有用。谢谢@tc_geophysics【参考方案13】:

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

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

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

【讨论】:

sudo pip 不会影响全局 pil 而不是虚拟环境 pil?【参考方案14】:

而不是运行:pip install Pillow

运行:pip install Image

darwin Big Sur pyenv

【讨论】:

“darwin Big Sur pyenv”是什么意思? @Ruli 这意味着他正在使用 MacOS (darwin),版本是 Big Sur,他的 python 设置是通过 pyenv。【参考方案15】:

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

【讨论】:

以上是关于Python:未安装 _imagingft C 模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError: The _imagingft C module is not installed

centos下安装pillow报ImportError: The _imagingft C module is not installed的解决方案

关于captcha使用The _imagingft C module is not installed的错误处理

没有未分配空间的centos7上如何模拟出sdb

模意义下的组合数

如何修复“未安装 _imaging C 模块”Django/WSGI/Apache