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

person user483144    schedule 25.10.2010    source источник


Ответы (15)


Ваш установленный PIL был скомпилирован без libfreetype.

Вы можете получить предварительно скомпилированный установщик PIL (скомпилированный с помощью libfreetype) здесь (и многие другие предварительно скомпилированные модули Python C):

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

person Imran    schedule 25.10.2010
comment
Если вам нужны бинарные файлы Linux, я думаю, вам придется получить их из репозитория программного обеспечения вашего дистрибутива. - person Imran; 25.10.2010
comment
Это было именно то, что мне было нужно, чтобы получить поддержку TTF в Windows. У двоичных файлов PIL на официальной странице были проблемы с sxs при загрузке _imagingft.pyd. Спасибо! - person Michael Labbé; 25.10.2010
comment
В настоящее время вы также можете получить Pillow из PyPI — индекса пакетов Python. - person martineau; 18.04.2013
comment
Похоже, PIL (не Pillow) больше нет. Есть ли другой источник для загрузки? - person LA_; 21.09.2013
comment
@LA_ Pillow является заменой PIL. - person Imran; 22.09.2013
comment
Спасибо! Работает на меня! - person soloice; 18.02.2017

В Ubuntu перед компиляцией PIL необходимо установить libfreetype-dev.

i.e.

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

ПС! Запуск pip install от имени sudo обычно устанавливает пакеты в /usr/local/lib в большинстве версий Ubuntu. Вместо этого вы можете установить Pil в виртуальной среде (virtualenv или venv) по пути, принадлежащему пользователю.

Вы также можете рассмотреть возможность установки подушки вместо pil, которая, я считаю, совместима с API: https://python-pillow.org. Обратите внимание, что для Pillow также требуется libfreetype-dev, и вам может потребоваться выполнить те же действия по удалению/установке, если libfreetype-dev отсутствовал во время первоначальной установки.

person Sindre Myren    schedule 24.04.2011
comment
Большое спасибо! Мне помогло мгновенно! - person Piotr Sobczyk; 01.11.2011
comment
Ошибка установки aptitude ;) - person anders; 14.06.2012
comment
У меня это не работает (Ubuntu 12.04, pip 1.1.7, Python 2.7). Я удалил pip, apitude установил libfreetype6-dev, затем запустил sudo pip install --upgrade pil, но проблема осталась. - person Matthew Flaschen; 12.12.2012
comment
У меня тоже не сработало (на Mac). Я установил libfreetype из исходного кода (из здесь), затем запустил sudo pip install --upgrade pil, но мне сказали что PIL был обновлен. Довольно python и перезапустил исходный скрипт, получил ту же ошибку. - person scubbo; 04.02.2013
comment
Это сработало для меня на Xubuntu. sudo apt-get установить libfreetype6-dev. А затем в моем virtualenv я запустил pip install Pillow (без sudo). Вы не хотите использовать sudo pip в виртуальных средах. - person pymarco; 04.12.2013
comment
@pymacro: Как вы сказали, вы не хотите sudo устанавливать pip, если используете virtualenv. Вы, вероятно, также не хотите выполнять sudo какую-либо операцию pip или easy_install, если можете этого избежать, поскольку установка вещей за пределами системы управления пакетами вашего дистора делает вашу установку грязной. Я хотел, чтобы этот комментарий был как можно короче, но все же работал. Пожалуйста, позаботьтесь о своей установке Linux :-) - person Sindre Myren; 12.02.2014
comment
У меня это не сработало из-за кешированной версии подушки. Мне нужно было pip uninstall pillow, а затем удалить ~/.cache/pip/.../pillow*, а затем pip install pillow. Как только подушка была перекомпилирована, все заработало правильно. - person Kurt; 09.09.2015
comment
Для справки для тех, кто все еще сталкивается с этой проблемой, решение @ Rafay по использованию pip install --no-cache-dir pillow может помочь. - person Sindre Myren; 18.05.2017
comment
@scubbo, с которым я столкнулся, не смог найти версию, которая удовлетворяет требованиям pil в mac high sierra - person Yuseferi; 03.04.2018
comment
@SindreMyren Спасибо за это. Мне пришлось сделать pip uninstall и install, чтобы заставить его работать. - person Torrien; 09.06.2020

Следующее работало для меня на Ubuntu 14.04.1 64 бит:

sudo apt-get install libfreetype6-dev

Затем в виртуалке:

pip uninstall pillow
pip install --no-cache-dir pillow
person Rafay    schedule 13.09.2015
comment
Спасибо за кеш! Кроме того, мы можем удалить кэш pip перед повторной установкой Pillow: rm -rf ~/.cache/pip - person LennyLip; 19.01.2016
comment
Просто комментарий в CentOS 6: yum install freetype-devel libjpeg-devel libpng-devel - person azuax; 22.06.2016

решение для CentOS 6 (и, возможно, на основе других оборотов):

yum install freetype-devel libjpeg-devel libpng-devel

pip uninstall pil Pillow
pip install pil Pillow
person fsw    schedule 12.05.2013
comment
используйте первую команду для установки *devel, а затем установите python-imaging с помощью yum (в репозитории epel), чтобы отобразить изображение. - person fanchyna; 23.10.2014

В 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
person suzanshakya    schedule 01.08.2012
comment
У меня не сработало - после каждой строки ln -s ... у меня получалось ln: /usr/local/lib/libfreetype.dylib: File exists. Проблема сохраняется. У вас есть еще идеи? - person scubbo; 04.02.2013
comment
Вы бы попробовали ln -sf? f перезаписывает существующие файлы, поэтому обязательно сделайте резервную копию существующих файлов. - person suzanshakya; 04.02.2013
comment
Только что попробовал ln -sf, как и рекомендовалось. После первой такой строчки у меня получилось ln: /usr/local/include//freetype2: Operation not permitted. Повтор операции с sudo дал ту же ошибку. - person scubbo; 04.02.2013
comment
Я использую Mavericks, и /usr/X11/include/freetype2 не существует в моей системе. - person volvox; 29.07.2014
comment
@volvox, попробуйте установить FreeType с brew install freetype. - person suzanshakya; 29.07.2014
comment
@suzanshakya спасибо, это сработало отлично (как только я установил доморощенный). - person volvox; 29.07.2014

По сути, вам нужно установить freetype перед установкой PIL.

Если вы используете Homebrew в OS X, это просто вопрос:

brew remove pil
brew install freetype
brew install pil
person Roshambo    schedule 21.08.2012
comment
Если это не работает, добавьте brew link freetype перед установкой PIL. - person user805627; 10.10.2012
comment
также пакет называется freetype для пользователей macports. - person DanH; 21.02.2013
comment
Мне пришлось переустановить freetype и libjpeg через brew, а затем перелинковать их с помощью brew link --overwrite freetype и brew link --overwrite libjpeg, затем переустановить pil, и это, наконец, заработало. Надеюсь, это поможет кому-нибудь - person gitaarik; 20.06.2013
comment
brew install pil ошибка возврата: ImportError: The _imagingft C module is not installed - person Deng Haijun; 26.04.2016

Работал для Ubuntu 12.10:

sudo pip uninstall PIL
sudo apt-get install libfreetype6-dev
sudo apt-get install python-imaging
person DmitrySandalov    schedule 26.01.2013
comment
Я изменил третью строку с sudo apt-get install python-imaging на pip install PIL, и это сработало. - person zephyr; 09.07.2013
comment
У меня работало на Debian, обратите внимание, что у меня уже установлен libjpeg-dev zlib1g-dev libpng12-dev - person cgl; 27.12.2014

Для OS X (я использую 10.6, но должен работать и для других) мне удалось обойти эту ошибку, воспользовавшись советом этот пост. В основном вам нужно установить пару зависимостей, а затем переустановить PIL.

person Bovard    schedule 10.07.2012

Для меня ни одно из решений, опубликованных здесь, до сих пор не сработало. Здесь я нашел другое решение: 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
person minzwurst    schedule 18.03.2014

Следующие работы на 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/

то, наконец, это работает!

person Jason Huang    schedule 04.06.2013

Ubuntu 11.10 устанавливает библиотеки zlib и freetype2 в соответствии со спецификацией для нескольких архитектур (например, /usr/lib/i386-linux-gnu). Вы можете использовать переменные среды установки PIL, чтобы он мог их найти. Однако он работает только с версиями PIL за пределами тега pil-117.

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 Pillow, — использовать dpkg-architecture -qDEB_HOST_MULTIARCH для получения правильного суффикса каталога библиотеки.

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

person milton    schedule 08.05.2012

Я использовал homebrew для установки freetype, и в /usr/local/lib у меня есть следующее:

libfreetype.6.dylib libfreetype.a libfreetype.dylib

Но обычное:

пип установить пил

У меня не работает, поэтому я использовал:

установить pip http://effbot.org/downloads/Imaging-1.1.6.tar.gz

person tc_geophysics    schedule 07.01.2014
comment
второй вариант у меня сработал. Спасибо @tc_geophysics - person MegaBytes; 20.01.2016

На моем Mac следующие шаги в терминале работают:

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

надеется, что это работает для вас. Удачи!

person Yun.Lu    schedule 18.11.2016
comment
не повлияет ли sudo pip на глобальный pil, а не на pil виртуальной среды? - person Saurabh Ariyan; 01.05.2018

Вместо бега: pip install Pillow

Выполнить: pip install Image

Дарвин Биг Сур Пьенв

person xbalazsyf    schedule 08.12.2020
comment
что означает darwin Big Sur pyenv? - person Ruli; 08.12.2020
comment
@Ruli это означает, что он использует MacOS (darwin), версия Big Sur, а его установка python осуществляется через pyenv. - person Ryu Kent; 11.02.2021

【решено】
В моей Ubuntu 12.04, после того как я установил python-imaging с помощью apt-get, все заработало.

person joest    schedule 18.03.2014