Встановлення PIL з піп


349

Я намагаюся встановити PIL (бібліотеку зображень Python) за допомогою команди:

sudo pip install pil

але я отримую таке повідомлення:

Downloading/unpacking PIL
  You are installing a potentially insecure and unverifiable file. Future versions of pip will default to disallowing insecure files.
  Downloading PIL-1.1.7.tar.gz (506kB): 506kB downloaded
  Running setup.py egg_info for package PIL
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py

Installing collected packages: PIL
  Running setup.py install for PIL
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py
    --- using frameworks at /System/Library/Frameworks
    building '_imaging' extension
    clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -IlibImaging -I/System/Library/Frameworks/Python.framework/Versions/2.7/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.8-intel-2.7/_imaging.o
    unable to execute clang: No such file or directory
    error: command 'clang' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/private/tmp/pip_build_root/PIL/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-AYrxVD-record/install-record.txt --single-version-externally-managed:
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py

running install

running build

.
.
.
.

copying PIL/XVThumbImagePlugin.py -> build/lib.macosx-10.8-intel-2.7

running build_ext

--- using frameworks at /System/Library/Frameworks

building '_imaging' extension

creating build/temp.macosx-10.8-intel-2.7

creating build/temp.macosx-10.8-intel-2.7/libImaging

clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -IlibImaging -I/System/Library/Frameworks/Python.framework/Versions/2.7/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.8-intel-2.7/_imaging.o

unable to execute clang: No such file or directory

error: command 'clang' failed with exit status 1

----------------------------------------
Cleaning up

Не могли б ви допомогти мені встановити PIL ??


Ви встановили Xcode, а потім встановили інструменти командного рядка Xcode? Схоже, у вас немає компілятора clang.
Fiver

Відповіді:


586
  1. Встановіть інструменти командного рядка Xcode та Xcode, як згадувалося.
  2. Замість цього використовуйте Подушку, оскільки PIL в основному мертвий. Подушка - це доглянута вилка PIL.

https://pypi.python.org/pypi/Pillow/2.2.1

pip install Pillow

Якщо у вас встановлені обидва Pythons і хочете встановити це для Python3:

python3 -m pip install Pillow

5
Я отримав clangпомилку на OSX Mavericks , коли я спробував це, але я знайшов , що ця відповідь допоміг з цим: stackoverflow.com/a/22322645/16959
Джейсон Sperske

34
Хоча це правильна і корисна відповідь, вона справді не відповідає на питання. Для тих із нас, хто перебуває на реабілітації старих проектів, які можуть зажадати заповнення залежності від PIL, просто так ми можемо знайти наступне, що зламається, нам насправді потрібно отримати фактичну залежність (а іноді навіть потрібно отримати конкретну версію що хтось збудував хаку).
Наме

3
@Namey Перенесення наявного коду PIL на Подушку можна легко . Порт PIL на подушку . Подушка заснована на коді PIL, і перетворилася на кращу, сучасну та більш дружню версію PIL.
GiriB

7
@GiriB Дякуємо за оновлення. Моя головна думка полягала в тому, що часто трапляються випадки, коли ви починаєте роботу над старим кодом виробництва, де існує 20 стародавніх залежностей, з яких може бути PIL, і вам потрібно щось налагодити, щоб виправити виробничий код. У такому випадку вам, безумовно , не потрібно писати порти для коду, підключеного до ~ 10 різних бібліотек у вашій програмі розробки, лише щоб почати налагодження однолінійної помилки, яка виникає у виробничому середовищі. Сподіваюсь, це прояснює.
Namey

Я намагаюся використовувати бібліотеку, яка використовує import Image. Чи є спосіб отримати Подушку надати зображення?
AnnanFay

60

Це працює для мене:

apt-get install python-dev
apt-get install libjpeg-dev
apt-get install libjpeg8-dev
apt-get install libpng3
apt-get install libfreetype6-dev
ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib

pip install PIL  --allow-unverified PIL --allow-all-external

9
На 64-бітних платформах зв'язаний шлях повинен бути різним - наприклад /usr/lib/x86_64-linux-gnu/libfreetype.so. Для більш незалежного архітектурного рішення створіть посилання на кшталт# ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
Mark Chackerian

Завжди однакова проблема для заголовків зображень: _imagingft.c: 73: 31: фатальна помилка: freetype / fterrors.h: Немає такого файлу чи каталогів #include <freetype / fterrors.h> Тож вам доведеться встановлювати python-візуалізацію thined pip
c24b

Завжди проблема у заголовках вільної форми, як згадується тут [ askubuntu.com/questions/507459/… ? SOlution: cd / usr / include ln -s freetype2 freetype
c24b

1
під ubuntu 14.04 потрібне ще 1 симпосилання sudo ln -s /usr/include/freetype2 /usr/local/include/freetype
Акаша

1
добре працював для мене секретом було - непроверений PIL
дозволити

54

Це дуже просто, використовуючи apt install, використовуйте цю команду, щоб зробити це

sudo apt-get install python-PIL

або

sudo pip install pillow

або

sudo easy_install pillow

2
не забудьте перезапустити ваш сервер ноутбуків ipython, якщо ви працюєте з ним.
shousper

подушка для встановлення судо піп працювала на мене. sudo apt-get install python-PIL не зробив.
Ю. Шень

1
Я вважав це чутливим до регістру, тому: sudo apt-get install python-PIL => Не вдалося (пакет не знайдено) sudo apt-get install python-pil => Працював
Clarkey252

35

У Mac OS X використовуйте цю команду:

sudo pip install https://effbot.org/media/downloads/Imaging-1.1.7.tar.gz

працював і над debian jessy! Просто потрібно було встановити python-dev заздалегідь :)
Agey

1
Мені довелося спочатку встановити libjpeg: brew install libjpeg
П'єр Ф

Нарешті фактичне рішення. У мого Mac немає apt-get: p, і я все одно хочу встановити його у virtualenv.
судо

використовуйте судо-піп встановити подушку - як нижче.
johndpope


26

Я отримав відповідь з обговорення тут :

я намагався

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

і це спрацювало.


8
Подумайте про це: pip install --no-index -f http://effbot.org/downloads/ -U PIL --trusted-host effbot.orgПричина, яку я використав для цього, полягає в тому, що це URL-адреса, вказана в пакеті, і на pypi.python.org/pypi/PIL
Том Мидделтин,

1
Я отримав попередження використовувати HTTPS замість HTTP. Після зміни URL-адреси він працював чудово.
AnnanFay

@TomMyddeltyn Це майже спрацювало, за винятком помилки компілятора, де він не може знайти X11 / Xlib.h
нечасто

@ Нечасто Я не впевнений, у чому проблема, вибачте.
Том Мидделтин

21

Встановити

pip install Pillow

Потім просто імпортуйте у свій файл, як,

from PIL import Image

Я використовую windows. Це працює для мене.

ПРИМІТКА :

Подушка - це функціональна заміна для бібліотеки зображень Python. Для запуску наявного коду, сумісного з PIL, з Pillow, його потрібно змінити, щоб імпортувати модуль Imaging з простору імен PIL замість глобального простору імен.

тобто зміни:

import Image

до:

from PIL import Image

https://pypi.org/project/Pillow/2.2.1/


Дякую! Читаючи назву "PIL", from PIL import Imageя ніколи не міг здогадатися, що назва цієї бібліотеки була "Подушка". Я також в Windows, і ваше рішення працювало на мене.
Маркос Буарке

Подушка - це функціональна заміна для бібліотеки зображень Python. Для запуску наявного коду, сумісного з PIL, з Pillow, його потрібно змінити, щоб імпортувати модуль Imaging з простору імен PIL замість глобального простору імен. Тобто зміна: import Imageto from PIL import Image pypi.org/project/Pillow/2.2.1
Chandan Sharma

Дякуємо за додаткову інформацію на bckground!
Маркос Буарке

12

Я вважаю, ти на Mac. Див. Як я можу встановити PIL на mac os x 10.7.2 Lion

Якщо ви використовуєте [homebrew] [], ви можете встановити PIL просто brew install pil. Тоді вам може знадобитися додати каталог встановлення ( $(brew --prefix)/lib/python2.7/site-packages) до свого PYTHONPATH або додати розташування самого каталогу PIL у файл, який називається PIL.pthфайлом, у будь-якому з каталогів вашого веб-пакету із вмістом:

/usr/local/lib/python2.7/site-packages/PIL

(припускаючи, що brew --prefixє/usr/local ).

Крім того, ви можете просто завантажити / скласти / встановити його з джерела:

# download
curl -O -L http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz
# extract
tar -xzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
# build and install
python setup.py build
sudo python setup.py install
# or install it for just you without requiring admin permissions:
# python setup.py install --user

Я працював над цим лише зараз (на OSX 10.7.2, з XCode 4.2.1 та System Python 2.7.1), і він склався чудово, хоча є ймовірність, що щось у моєму середовищі не за замовчуванням.

[homebrew]: http://mxcl.github.com/homebrew/ "Homebrew"


Хоча це пояснює, як встановити pil, він не робить це через те pip, що OP намагався спочатку. Я вважаю, що brewв наші дні рясне використання в Інтернеті є неоптимальним. brewвстановить зовсім небагато накладних витрат залежно від того, що ви хочете зробити. тому pip, мабуть, все-таки буде найкращим вибором для модулів python.
mknaf

11

У наші дні всі використовують Подушку, дружню виделку PIL, над PIL.

Замість: sudo pip install pil

Зробіть: sudo pip install pillow

$ sudo apt-get install python-imaging
$ sudo -H pip install pillow

Я б рекомендував ніколи не робити цього sudo pip install .... Це може призвести до порушення встановлення Python вашої системи, що може вплинути на додатки вашої системи. Спробуйте використовувати віртуальне середовище Anaconda , venv або Docker.
n1k31t4

11

Для Ubuntu PIL вже не працює. Я завжди отримую:

Не знайдено відповідного розподілу для PIL

Тож встановіть зображення python:

sudo apt-get install python-imaging

6

У мене така ж проблема, але вона вирішується встановленням python-dev.

Перед встановленням PIL запустіть наступну команду:

sudo apt-get install python-dev

Потім встановіть PIL:

pip install PIL

10
Це не спрацювало для мене на Ubuntu 14. pip install pilпризводить до No distributions at all found for PILтого, встановити я спочатку python-dev чи ні.
aliteralmind

5

У мене були деякі помилки під час встановлення. Про всяк випадок, якщо хтось теж має це. Незважаючи на це, я вже сидів під користувачем адміністратора, але не root.

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/PIL'

Storing debug log for failure in /Users/wzbozon/Library/Logs/pip.log

Додавання "sudo" вирішило проблему, з sudo це спрацювало:

~/Documents/mv-server: $ sudo pip install Pillow


5

Я спробував усі відповіді, але не вдався. Безпосередньо отримайте джерело з офіційного сайту, а потім складіть успіх встановлення.

  1. Перейдіть на сайт http://www.pythonware.com/products/pil/#pil117
  2. Клацніть "Бібліотека Python Imaging 1.1.7 Source Kit", щоб завантажити джерело
  3. tar xf Imaging-1.1.7.tar.gz
  4. cd Imaging-1.1.7
  5. sudo python setup.py install


3

Спробуйте це:

sudo pip install PIL --allow-external PIL --allow-unverified PIL

2
Хоча ця відповідь може бути правильною, будь ласка, додайте пояснення. Розміщення основної логіки важливіше, ніж просто надання коду, оскільки це допомагає ОП та іншим читачам самостійно виправляти цю та подібні проблеми.
CodeMouse92

Зауважте, що ця команда вичерпана для мене. У будь-якому випадку його буде знято через кілька тижнів. sudo pip install --allow-external --allow-unverified PIL PILможе також працювати зараз.
Статистика навчання за прикладом

3
--allow-externalі --allow-unverifiedобидва застарілі. pip install pillowє правильною відповіддю.
Доріан

1
Відповідь, яку я опублікував, запропонував мені stderr. Тож моя відповідь застаріла, але я її не написав. Також прошу вибачення за моє повідомлення, спрямоване на JasonMc92 (яке з тих пір було видалено). Мій тон був поза лінією, але мої настрої залишаються. Існує щось неприємне в тому, щоб розгорнути головну сторінку та скопіювати / вставити свою замітку про "надання логіки". Можливо, ви переслідуєте бейдж, і, мабуть, це нормально, але заради послідовності залиште коментар до всіх інших подібних відповідей на це питання, які не відповідають загальній логіці.
alfonso


3
  • Спочатку слід запустити це, sudo apt-get build-dep python-imagingщо дасть вам всі залежності, які вам можуть знадобитися

  • Потім бігайте sudo apt-get update && sudo apt-get -y upgrade

  • Слідом за sudo apt-get install python-pip

  • А потім нарешті встановіть Pil pip install pillow


2

Шукайте в менеджері пакунків перед використанням pip. На Arch Linux можна отримати PILpacman -S python2-pillow


0

Є ще один інструмент пакетів Python, який називається conda . Конда надає перевагу (я вважаю) над pip, коли є бібліотеки, яким потрібно встановити C ++ та інші прив’язки, які не є чистою Python. Conda включає також pip в його встановлення, так що ви все ще можете використовувати pip, але ви також отримуєте переваги від conda.

Conda також за замовчуванням встановлює IPython , pil та багато інших бібліотек. Я думаю, що вам сподобається.

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