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重新安装freetype
和libjpeg
,然后使用brew link --overwrite freetype
和brew 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的解决方案