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

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

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

import PIL
import Image
import _imaging

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

The _imaging C module not installed

Ответы

Ответ 1

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

Я надеялся, что есть способ сделать это без перекомпиляции. Я использую 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 в virtualenv

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

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

python
>>import import ImageFont 
>>

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

Ответ 2

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

Это работает для меня.

Ответ 3

Здесь некоторые вещи, которые могут вам помочь, если from PIL import Image работает, но import _imaging завершается с ошибкой. Если Image не работает, см. Примечание в конце.

В Ubuntu 13.04 (raring) у меня была эта проблема. Оказывается, 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 после добавления этой библиотеки для изменений, которые будут отображаться, например. интерактивная консоль.

Ответ 4

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

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

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

Ответ 5

Я полностью отсутствовал в файлах _imaging.* в папке lib/site-packages/PIL.

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

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

переименовал его из .egg в .zip and copied all the files in the folder PIL that start with _imaging to the folder lib/site-packages/PIL`.

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