Помилка встановлення бібліотеки зображень Python за допомогою pip у Mac OS X 10.9


78

Я хочу встановити PIL на Mavericks за допомогою pip, але отримаю цю помилку.

_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
#include <freetype/fterrors.h>
         ^
1 error generated.
error: command 'cc' failed with exit status 1

Мої інструменти командного рядка встановлені та оновлені, і кожен знайдений натяк не допомагав. Як я можу змусити це скомпілювати?

EDIT: Я щойно перевірив, freetype також вже встановлений через homebrew


Вам потрібні freetypeзаголовки.
devnull

Так, я це здогадався;) Також просто знайшов спосіб це вирішити.
Lukas Spieß

Відповіді:


210

Замість того, щоб посилатися на певну версію freetype2, зробіть це:

ln -s /usr/local/include/freetype2 /usr/local/include/freetype

Це позбавляє вас від труднощів відтворення символічного посилання під час кожного оновлення freetype2.


1
після використання sudo easy_install PILя зіткнувся з цією проблемою, ваше рішення працює як шарм! Дякую!
spiralmoon


У мене freetype2 вже був зв’язаний, можливо, найкраще пов’язати оригінал, який знаходився за адресою /usr/local/Cellar/freetype/2.5.5/include/freetype2
Salyangoz,

1
@Salyangoz: / usr / local / include / freetype2 - це символічне посилання на /usr/local/Cellar/freetype/2.5.5/include/freetype2 (його створив Homebrew). Використання цього замість фактичного шляху має перевагу при виконанні оновлення в тому, що воно все одно буде працювати.
mcuelenaere

2
Freetype2 не був встановлений на моїй машині під управлінням El Capitan, тому мені довелося запустити brew install freetypeперед тим, як зробити це символьне посилання
skandocious

31

З macports рішення, яке мені підходило:

sudo port install freetype
sudo ln -s /opt/local/include/freetype2 /opt/local/include/freetype

А потім повторно запустіть процес збірки PIL.


це спрацювало для мене, коли я перейшов на
найсильнішу

працював у мене на йосеміті під час оновлення до cocos2dx v3.3 з 2.2
andrewz

28

Я вирішив цю проблему за допомогою цього посилання:

ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype

У мене вже встановлено freetype через homebrew.


5

Це викликано зміною заголовків вільного типу> = 2.1.5. PIL не використовує правильний задокументований спосіб включення заголовків freetype, що призводить до збою збірки тепер, коли freetype остаточно видалив давно застарілий спосіб включення заголовків. Ця проблема задокументована у верхній частині http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html :

ПРИМІТКА. Починаючи з FreeType 2.1.6, стара схема включення файлу заголовка більше не підтримується. Це означає, що тепер ви отримуєте повідомлення про помилку, якщо робите щось на зразок наступного:

#include <freetype / freetype.h>
#include <freetype / ftglyph.h>

Будь ласка, передайте цю проблему розробникам PIL та порекомендуйте їм використовувати задокументований спосіб включення заголовків вільного типу:

#include <ft2build.h>
#include FT_ERRORS_H


4

Після багатьох спроб я вирішив цю проблему, компілюючи PIL без підтримки freetype. Щоб зробити це, я просто непов'язаний від мого $ PATH , використовуючи brew unlink freetypeі потім pip install PIL==1.1.7.


що взагалі таке freetype? :)
stantonk

3

Я щойно вирішив це за допомогою кроків, описаних у цій відповіді Stackoverflow. Здається, це вина Xcode у встановленні freetype у дивних місцях.



2

У моєму OSx я знайшов .hфайл у /opt/local/include/freetype2директорії. Отже, я друкую

sudo ln -s /opt/local/include/freetype2/ /usr/local/include/freetype

це працює

Можливо, найкращий спосіб - це додати /opt/local/includeдо шляху включення вашого клангу.


1

osx yosemite, це мені вдалося:

(virtualenv)

$ ln -s /opt/local/include/freetype2/ /usr/local/include/freetype2
$ pip install pil==1.1.7 --allow-external pil --allow-unverified pil

Пробіг лише перший рядок, тоді це у мене спрацювало на Йосеміті. Вмівpip install PIL
Аарон Еш

0

Я використовую Arch Linux і мав цю проблему. У моєму випадку довелося вручну завантажувати та розпаковувати zip-файл із https://pypi.python.org/pypi/Pillow/2.2.1#downloads . Потім я відредагував файл, _imagingft.cщоб змінити шлях включення з freetype/fterrors.hна, fterrors.hоскільки не було freetypeпідкаталогу, /usr/include/freetype2де fterrors.hзнаходиться. Нарешті python setup.py installпрацював нормально.

Редагувати: я повинен згадати, що це було рішення для встановлення Pillow, а не PIL, але Pillow - це лише вилка PIL, і вона все ще може бути застосована до інших із цією проблемою.


0

Якщо ви все ще шукаєте відповіді, як я після прочитання цього та інших гуглів, можливо, вам буде цікаво побачити це:

Увага

Подушка> = 2.1.0 більше не підтримує функцію "імпортувати _образи". Будь ласка, використовуйте “from PIL.Image import import as _imaging”.

від сюди

На той час, коли ви прочитаєте це, сторінка, мабуть, зміниться, але текст, принаймні, все ще буде тут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.