Проблема с установкой PIL с помощью virtualenv или buildout

Когда я устанавливаю PIL с помощью easy_install или buildout, он устанавливается таким образом, что я должен выполнить "Импорт образа", а не "из образа импорта PIL".

Однако, если я делаю "apt-get install python-imaging" или использую "pip -E test_pil install PIL", все работает нормально.

Вот примеры того, как я пытаюсь установить PIL, используя virtualenv:

# virtualenv --no-site-packages test_pil
# test_pil/bin/easy_install PIL
# test_pil/bin/python
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PIL

Я вижу, что easy_install упаковывает PIL в Egg, а PIP - нет. То же самое с buildbot, он использует яйца.

Как правильно установить PIL, используя easy_install или buildout?

4 ответа

Решение

Версия PIL, упакованная на pypi (автором), несовместима с setuptools и поэтому не может быть легко установлена. Люди создали easy_installable версии в другом месте. В настоящее время вам нужно указать URL-адрес find-links и использовать pip получить хороший пакет:

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

Используя pip install с --no-index вы избегаете риска найти PyPI (нефиксированный) оригинал PIL. Если бы вы были использовать easy_install, вы должны использовать прямую ссылку на исходный архив исправленной версии; easy_install упорно до сих пор использует ссылку PyPi над FIND-ссылка URL:

easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz

Чтобы включить PIL в сборку, укажите яйцо с тем же пин-кодом версии или используйте раздел версий:

[buildout]
parts =
find-links =
    http://dist.plone.org/thirdparty/
eggs =
    PIL
versions = versions

[versions]
PIL = 1.1.7

Редактировать март 2011 года. Исправления для устранения проблем с упаковкой теперь включены в дерево разработки PIL, поэтому этот обходной путь может скоро устареть.

Редактировать февраль 2013: просто используйте подушку и покончите с этим.:-) Очевидно, что ожидание исправления оригинальной упаковки не окупилось.

Используйте Подушку: "дружелюбная" вилка PIL:-) Она предлагает:

  • Полная совместимость с настройками
  • Более быстрый цикл выпуска
  • Никаких изменений кода изображения, которые отличаются от PIL (т.е. он предназначен для отслеживания всех изменений кода изображения PIL и не вносит никаких собственных изменений без сообщения о них в восходящем направлении).
  • Двоичные файлы Windows

Если PIL когда-либо сделает именно то, что делает Pillow, то вилка умрет. Пока этого не произошло, у нас есть Подушка.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь автором разветвления, и Подушка была создана главным образом для того, чтобы облегчить мою работу (хотя приятно видеть, что другие люди тоже ее используют).

РЕДАКТИРОВАТЬ: Pillow 2.0.0 был выпущен 15 марта 2013 года. Он предлагает поддержку Python 3 и множество исправлений / улучшений ошибок. Хотя мы все еще пытаемся отслеживать изменения с помощью PIL вверх по течению (к сожалению или к счастью, в зависимости от того, как вы на это смотрите), подушка начала отходить от PIL.

Для Ubuntu я обнаружил, что мне нужно установить пакет заголовков C для моей версии Python (2.7)

sudo apt-get install python2.7-dev

После этого, pip install pil работал.

В Windows я установил PIL в virtualenv следующим образом:

Установите PIL в ваших глобальных пакетах сайтов Python, выполнив.exe с: http://www.pythonware.com/products/pil/

Затем, как "сделай сам", скопируйте файл PIL.pth и каталог PIL в C:\Python25\Lib\site-packages в каталог virt -alenv site-packages. Да, питон по-прежнему "грязные руки" среда...

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