Не удается получить поддержку JPEG с PIL на OSX

Я пытаюсь запустить Google App Engine с библиотекой PIL и поддержкой jpeg, чтобы использовать модуль изображений в GAE.

Вот что я сделал до сих пор:

  1. Я скачал тарбол для PIL 1.1.7 и извлек его и установил его python setup.py install, Однако я заметил, что в выводе сказано, что поддержка jpeg недоступна. Так что я тыкал через README и узнал, что мне нужно установить libjpeg.

  2. Итак, я скачал источник для jpeg-7 и построил это. Я настроил следующие флаги, прежде чем я запустил make а также make install: configure --enable-shared --enable static, Я изначально настроил и собрал без этих флагов, но нашел множество источников, утверждающих, что это нужно сделать, чтобы PIL распознал libjpeg в OSX, поэтому я запустил make clean а также make distclean и перенастроить с флагами и перестроен.

  3. Затем я попытался переустановить PIL. Я переместился в каталог, где я извлек исходный код PIL. В setup.py я изменил строку JPEG_ROOT указать на /usr/local/bin (где был установлен jpeg, но, увидев, что PIL хочет библиотеки, а не двоичные файлы, я позже повторил шаг 3, но с /usr/local/lib и снова с libinclude('/usr/local') в качестве последней попытки) и побежал python setup.py clean, python setup.py build, а также python setup.py install, Казалось, это работает нормально. В выводе утверждалось, что была поддержка jpeg. Однако, когда я запустил GAE, PIL работал нормально, но я не мог получить поддержку jpeg. Вывод скрипта установки PIL находится здесь:

-

Jays-MacBook-Air:Imaging-1.1.7 jay$ python setup.py install
running install
running build
running build_py
running build_ext
gcc-4.2 not found, using clang instead
--- using frameworks at /System/Library/Frameworks
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43)
              [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.
running build_scripts
running install_lib
running install_scripts
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilconvert.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pildriver.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilfile.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilfont.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilprint.py to 755
running install_egg_info
Removing /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/PIL-1.1.7-py2.7.egg-info
Writing /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/PIL-1.1.7-py2.7.egg-info
creating /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL.pth

Но GAE не требовал поддержки jpeg, и каждый раз, когда я бегал python selftest.py это дало мне следующий вывод:

Jays-MacBook-Air:Imaging-1.1.7 jay$ python selftest.py
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY 
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
*** JPEG support not installed
--- ZLIB (PNG/ZIP) support ok
*** FREETYPE2 support not installed
*** LITTLECMS support not installed
--------------------------------------------------------------------
Running selftest:
*****************************************************************
Failure in example:
try:
 _info(Image.open(os.path.join(ROOT, "Images/lena.jpg")))
except IOError, v:
 print v
from line #24 of selftest.testimage
Expected: ('JPEG', 'RGB', (128, 128))
Got: decoder jpeg not available
1 items had failures:
   1 of  57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.

Я нахожусь в конце моего остроумия здесь. Я перепробовал все, что мог придумать. Я даже пытался указывать setup.py прямо к некомпилированным заголовочным файлам jpeg-7, так как комментарии в setup.py попросить lib а также includes каталоги. Я просто не могу понять, почему PIL не будет работать с поддержкой JPEG. Я перепробовал все, что могу найти в интернете. Я, кажется, сталкиваюсь с такой проблемой часто при сборке из исходного кода. Я был бы признателен за любые предложения (даже предложения о том, как установить PIL из репозитория или что-то простое - я устал от попыток создавать программное обеспечение из исходных кодов и в конечном итоге на моей машине было огромное количество каталогов, которые не будут компилироваться в что-то хорошее).

1 ответ

Мне удалось это выяснить. Я чувствую себя немного смущенным, но, надеюсь, это будет отсылкой к любому, кто сделает это в будущем.

Оказывается, когда я побежал python setup.py build (или же setup.py install без предварительной сборки, которая, кажется, вызывает скрипт сборки, если он еще не запущен), она не будет перезаписывать уже существующие сборки, и setup.py clean также не удалил их (хотя я наивно предполагал, что это сделал сценарий). Я просто rm -rf *все в ПИЛ build/ папка, которая заставила PIL начать сборку заново. Затем, наконец, PIL выслушал меня и применил сделанные мной изменения. JPEG_ROOT, который работал в конце концов.

Другие вопросы по тегам