Ошибка PIL: модуль _imaging C не установлен - PullRequest
16 голосов
/ 19 июня 2010

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

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

import PIL
import Image
import _imaging

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

The _imaging C module not installed

Ответы [ 6 ]

3 голосов
/ 23 мая 2012

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

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

3 голосов
/ 27 июня 2010

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

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

Установите пил и Джанго в virtualenv

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

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

python
>>import import ImageFont 
>>

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

2 голосов
/ 22 ноября 2013

Вот некоторые вещи, которые могут вам помочь, если 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, и все заработало.Вам придется делать это снова, каждый раз, когда вы обновляете App Engine SDK, но, по крайней мере, он не мешает разрабатываемому вами коду.

Манипулируйте sys.path в main.py:

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

# 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, чтобы изменения отображались, например, в интерактивной консоли.

0 голосов
/ 27 апреля 2017

Мне не хватало файлов _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`.

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

0 голосов
/ 26 апреля 2014

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

0 голосов
/ 16 февраля 2014

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

sudo apt-get install libjpeg62:i386
...