Подтвердить что ты не робот

Установка PIL для использования с Django в Mac OS X

Меня действительно раздражает установка PIL (Python Imaging Library) в Mac OS X 10.6. Кто-нибудь его установил и может опубликовать рецепт здесь? Я пробовал много из них, размещенных здесь на этом сайте, и многого от google, но всегда с отсутствующей частью и не может нормально работать с PIL...

Спасибо заранее. Игнас

4b9b3361

Ответ 1

РЕДАКТИРОВАТЬ: Этот ответ получил последнее голосование, и я хочу изменить его, чтобы отразить то, что я делаю сейчас.

Во-первых, я переключился с MacPorts на Homebrew для управления пакетами в Mac OS X. Во-вторых, я переключился с используя мой менеджер пакетов с помощью pip и virtualenvwrapper для управления моими библиотеками Python.

Почему я переключился:

Сначала, имея всего несколько проектов Django, было очень легко держать все в курсе, используя MacPorts. Также было довольно просто иметь несколько версий Python, используя python_select. То, что я не понял, было то, что я делал довольно ужасную работу по поддержанию нескольких библиотек, работающих бок о бок. Это стало очевидным, поскольку я обновил свои пакеты, которые иногда мне действительно не хотелось, чтобы версия Django проекта менялась. После того, как несколько проектов Django 1.1 (в настоящее время запущенных Django 1.3) начали демонстрировать странное поведение (формы не могут быть отправлены из-за изменений промежуточного программного обеспечения CSRF, небольших различий в библиотеках Django, изменения активов приложения администратора и т.д.), Стало ясно, что я должен смотреть в лучшее решение.

Что я делаю сейчас:

В Mac OS X я перешел на использование pip и virtualenvwrapper. Во-первых, я устанавливаю virtualenvwrapper:

pip install virtualenvwrapper

Это захватит virtualenv и virtualenvwrapper. Затем вам нужно добавить следующее к вашим .bashrc или .profile и source или открыть новую оболочку.

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh # where Homebrew places it
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # optional

Строка 1 устанавливает переменную workon, чтобы найти ее файлы. Строка 2 указывает на основную оболочку script (путь здесь - это место, где Homebrew помещает файл, это может быть иначе, если вы используете другой диспетчер пакетов). Строка 3 не является обязательной, но мне она очень нравится: она гарантирует, что никакие установленные в настоящее время библиотеки в "основном" репозитории пакетов сайтов не будут протекать в вашей вновь созданной виртуальной среде. Я нахожу, что это держит вещи в чистоте и приводит к меньшему количеству неожиданностей в будущем, поскольку вещи обновляются.

Следующий шаг - создать новую виртуальную среду:

mkvirtualenv testEnvironmentName

После создания среды вы будете помещены в нее. Если вы сохранили флаг --no-site-packages, вы можете ввести pip freeze, чтобы увидеть, что ваш список слайдов Python теперь пуст. Чтобы выйти из виртуальной среды, используйте команду deactivate. Чтобы снова войти в ваш virtualenv, используйте workon testEnvironmentName. Обратите внимание, что вы можете использовать вкладку по имени среды. Также обратите внимание, что типизация workon сама по себе даст вам список доступных сред. Отсюда вы можете pip install любые библиотеки, которые вы хотите, включая PIL.

Чтобы узнать больше о virtualenvwrapper, Я рекомендую проверить документацию.

Вот еще один отличный ресурс, который научил меня многому об использовании virtualenvwrapper (или просто просмотрите скринкаст)


ORIGINAL:

Вы также можете установить PIL с помощью MacPorts. Имя пакета py-pil. Здесь больше информации о пакете. Я очень люблю MacPorts over pip, так как я нахожу, что это дает мне немного более удобную конфигурацию, когда дело доходит до установки нескольких версий python и нескольких библиотек.

Вот инструкции по установке для MacPorts: http://www.macports.org/install.php

См. также: Каков наиболее совместимый способ установки модулей python на Mac?

Ответ 2

Следующие шаги работали для меня:

$ brew install pip
$ export ARCHFLAGS="-arch i386 -arch x86_64"
$ pip install pil

Ответ 3

Да, у меня есть проблемы с PIL на 10.6.6 тоже, homebrew и easy_install.

Самое простое решение для меня: easy_install PIL/pip install PIL, перейти к /Library/Python/2.6/site-packages/ и символизировать файл PIL-1.1.7-.....egg на PIL

ln -s PIL-................egg PIL


>>> import PIL
>>> from PIL import Image
# no more problems.

Изменить: В наши дни я пытаюсь использовать Pillow, библиотеку, созданную для установки PIL. Попробуйте pip install pillow - не повредит!

Ответ 4

Возможно, вам будет проще определить вашу проблему, если вы сможете уточнить, что вы пробовали, и какие сообщения об ошибках были сгенерированы с этими попытками. Вот некоторые возможные решения, которые вы могли или не могли предпринять:

pip install pil

Если у вас нет pip, попробуйте

easy_install pil

Поскольку вы находитесь на Mac, вы также можете получить HomeBrew (менеджер пакетов), а затем попробовать

brew install pil

или Macports содержит источник?

Что еще более важно, PIL README утверждает,

* ---------------------------------------------- ----------------------

Дополнительные примечания для Mac OS X

В Mac OS X вы обычно устанавливаете дополнительное программное обеспечение, такое как libjpeg или freetype с помощью инструмента "fink", а затем он заканчивается "/SW". Если вы установили библиотеки в другом месте, у вас может быть для настройки файла setup.py перед сборкой. *

Это может быть вашей проблемой. Удачи!

Ответ 5

После того, как новая установка ОС выполнила следующие шаги:

  • Установлен homebrew
  • brew установить libjpeg
  • brew установить pil
  • easy_install pil
  • cd/Library/Python/2.6/site-packages
  • ln -s/usr/local/Cellar/pil/1.1.7/lib/python2.6/site-packages/PIL PIL

После этого я смог загрузить и сохранить jpeg файлы... Я знаю, что в этой проблеме есть много разных решений, и я не на 100%, мой способ будет работать для других, но стоит попробовать, если вы просто ударяя головой в стену:)

Ответ 6

Я использую OS X 10.5.8, gcc 4.2.1, python 2.7.5, libjpegv9 и Pillow 2.1.0 (который основан на PIL).

Моя проблема, по-видимому (но это просто предположение) была вызвана несовместимостью архитектуры libjpeg и python (и Pillow).

Построение python и libjpeg из источника с использованием только 32-битной арки разрешило это. Я установил все другие библиотеки python, включая Pillow, используя

pip install xxxxx

и он работал нормально.

Подробнее

Сначала я попробовал как dmg с сайта python.org, так и универсальную сборку, установленную через macports. Я не указывал универсальный при установке, но macports все равно устанавливал архитектуры i386 и ppc.

Это вызвало у меня проблемы, потому что libjpeg по умолчанию компилируется только для i386.

Чтобы проверить сборку двоичных файлов, я сделал:

file /usr/bin/python

/usr/bin/python: универсальный двоичный файл Mach-O с двумя архитектурами

/usr/bin/python: исполняемый файл Mach-O i386

/usr/bin/python: исполняемый файл Mach-O ppc

file /usr/local/lib/libjpeg.dylib 

/usr/local/lib/libjpeg.dylib: динамически связанная совместно используемая библиотека Mach-O i386

При создании PIL (или Pillow) он, казалось, использовал те же варианты сборки, что и python "-gcc i386 -gcc ppc" (что кажется логичным).

Все прошло хорошо, пока не построил модуль "_imaging". Там было показано предупреждение о том, что libjpeg.dylib не имеет правильной архитектуры, но, в конце концов, он показал, что JPEG был доступен точно так же.

Ответ 7

Существует вилка упаковки PIL, которая пытается упростить установку и поддержку на многих современных платформах, включая OS X:

Вы должны установить его на OS X с помощью pip или easy_install (при условии, что у вас есть XCode). Если у вас есть какие-либо проблемы, пожалуйста, откройте здесь билет:

Ответ 9

У меня проблемы с установкой PIL с brew и easy_install на моем Mac тоже. Мое решение - загрузить исходный код из http://www.pythonware.com/products/pil/, извлечь tar-мяч и использовать

python setup.py install

для компиляции и установки пакета.