Ошибка 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`.
.. Проблема решена
Ответ 6
В Ubuntu следующая команда помогла мне (спасибо этому ответу на askubuntu):
sudo apt-get install libjpeg62:i386