Ошибка PIL: модуль _imaging C не установлен

У меня установлена ​​PIL (библиотека изображений Python).

Когда я запускаю Python:

import PIL
import Image
import _imaging

Я не получаю ошибок. Однако при запуске моего приложения оно вызывает

The _imaging C module not installed

person ApPeL    schedule 19.06.2010    source источник
comment
У меня такая же проблема. Чистая установка PIL 1.1.7 (последняя на данный момент) поверх чистой установки на python 2.7.8 (последняя на данный момент) устранила проблему. Убедитесь, что ваш Python 2.7 32-разрядный.   -  person Petr Vepřek    schedule 02.08.2014


Ответы (6)


Я разместил этот ответ по ссылке, которую вы прислали (спасибо за это), но решил опубликовать и источник. Извините за тупой пост.

Я надеялся, что есть способ сделать это без перекомпиляции материала. Я использую virtualenv. Я обнаружил, что если я снес свою виртуальную установку env, а затем переустановил с помощью pip, Imaging снова начал работать. Эти шаги, похоже, сработали (обратите внимание, я использую OSX)

Не уверен, что это имело значение, но проверял, установлен ли jpeg

winesap:~ $ port installed | grep -i jpeg
  jpeg @7_0
  jpeg @8a_0 (active)

Убедитесь, что у меня установлен PIP

sudo port -v install py26-pip

Удалите старую виртуальную среду, которая у меня была, и создайте ее заново.

rm -rf ve
virtualenv –no-site-packages –distribute ve
. ./ve/bin/activate

Установите pil и django в виртуальную среду.

echo “pil” > requirements.pip
echo “django” >> requirements.pip
pip-2.6 install -E ./ve/ -r requirements.pip

Проверьте, работает ли импорт сейчас. Обратите внимание на отсутствие неприятной ошибки модуля C

python
>>import import ImageFont 
>>

Надеюсь, это полезно.

person Joe J    schedule 27.06.2010
comment
Да, нет проблем, мой был основан исключительно на чистом apache mod_wsgi, django и python. - person ApPeL; 29.06.2010

В Windows удалите _imaging.pyd и _imagingft.pyd внутри C:\Python27. Оставьте все модули _imaging внутри папки C:\Python27\Lib\site-packages\PIL.

Меня устраивает.

person gordon86    schedule 23.05.2012

Вот некоторые вещи, которые могут вам помочь, если from PIL import Image работает, а import _imaging не работает. Если Image тоже не работает, см. Примечание в конце.

В Ubuntu 13.04 (раринг) у меня была эта проблема. Получается, что Ubuntu устанавливает _imaging.so в место, которое не ожидает App Engine: /usr/lib/python2.7/dist-packages вместо /usr/lib/python2.7/dist-packages/PIL. Так что _imaging.so не было нигде в sys.path.

Вот несколько способов обойти это:

Поместите модули PIL C где-нибудь уже на пути:

Я заметил, что /path/to/google_appengine/lib/PIL-1.1.7 был в sys.path, но в моей установке этого каталога не было. Итак, я создал каталог и скопировал в него файлы .so, и все заработало. Вам придется делать это снова, каждый раз, когда вы обновляете SDK App Engine, но, по крайней мере, это не мешает коду, который вы разрабатываете.

Управление sys.path в main.py:

Этот код проверит, запущен ли сервер приложений разработки, и если да, то добавит правильный каталог к ​​пути. Не проверено, но должно работать ;)

# Find _imaging.so and put its directory here.
# `locate _imaging.so` or `dpkg -L python-imaging`
PIL_PATH = '/usr/lib/pyshared/python2.7/'

PRODUCTION_MODE = not os.environ.get(
    'SERVER_SOFTWARE', 'Development').startswith('Development')

if not PRODUCTION_MODE:
    sys.path.insert(PIL_PATH)

Я предполагаю, что это может сделать вам доступным не только модули PIL, так что это внесет (еще больше) различий между разработкой и производством. Кроме того, этот метод включает в себя изменение исходного кода вашего приложения, что кажется плохим решением, если его разрабатывает более одного человека.


Примечание. Если import Image не работает, возможно, вы забыли добавить библиотеку PIL в свой app.yaml.

libraries:
- name: PIL
  version: "latest"

Возможно, вам придется перезапустить dev_appserver.py после добавления этой библиотеки, чтобы изменения отразились, например, в. интерактивная консоль.

person rescdsk    schedule 21.11.2013

почему проблема существует с PIL 1.1.6? (только 1.1.7), разве что версия 1.1.6 не использует эти библиотеки?

PIL 1.1.6 также использует свою внутреннюю библиотеку C для ускорения работы.

Для Windows вы должны использовать предварительно скомпилированные пакеты. http://www.pythonware.com/products/pil/ предлагает двоичные файлы X86 Windows для версии 1.1. .7. Вы можете столкнуться с проблемой с бинарными файлами Windows 1.1.7. Библиотека FreeType C ссылается на отладочную CRT, которая доступна не на всех машинах. Вы можете легко исправить файл _imagingft.pyd с помощью шестнадцатеричного редактора.

person Transformer    schedule 26.04.2014
comment
Не могли бы вы подробно помочь, как исправить ссылку CRT в файле _imagingft.pyd с помощью шестнадцатеричного редактора? Спасибо - person egesuato; 17.10.2017
comment
Ознакомьтесь с решениями здесь и посмотрите, поможет ли это bitbucket.org/effbot/pil-117/issues/1/. Пожалуйста, внимательно изучите их и сделайте резервные копии, прежде чем пробовать решения. - person Transformer; 22.10.2017

У меня полностью отсутствовали файлы _imaging.* в папке lib/site-packages/PIL.

Скачал яйцо отсюда (правильный файл зависит от платформы):

https://pypi.python.org/pypi/Pillow/2.7.0

переименовал его из .egg в .zipand copied all the files in the folderPILthat start with_imagingto the folderlib/site-packages/PIL`.

.. Проблема решена

person Matthias Kuhn    schedule 27.04.2017

В Ubuntu мне помогла следующая команда (спасибо этот ответ на askubuntu):

sudo apt-get install libjpeg62:i386
person Dennis Golomazov    schedule 16.02.2014