Cài đặt PIL với pip


349

Tôi đang cố gắng cài đặt PIL (Thư viện hình ảnh Python) bằng lệnh:

sudo pip install pil

nhưng tôi nhận được thông báo sau:

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

Bạn có thể vui lòng giúp tôi cài đặt PIL ??


Bạn đã cài đặt Xcode và sau đó cài đặt các công cụ dòng lệnh của Xcode chưa? Có vẻ như bạn không có trình biên dịch clang.
Fiver

Câu trả lời:


586
  1. Cài đặt Xcode và Xcode Command Line Tools như đã đề cập.
  2. Sử dụng Gối thay thế, vì PIL về cơ bản đã chết. Gối là một ngã ba duy trì của PIL.

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

pip install Pillow

Nếu bạn đã cài đặt cả Pythons và muốn cài đặt cái này cho Python3:

python3 -m pip install Pillow

5
Tôi đã clanggặp lỗi trên OSX Mavericks khi tôi thử điều này, nhưng tôi thấy rằng câu trả lời này đã giúp với điều đó: stackoverflow.com/a/22322645/16959
Jason Sperske

34
Mặc dù đây là một câu trả lời hợp lệ và hữu ích, nhưng nó thực sự không trả lời được câu hỏi. Đối với những người trong chúng tôi đang trong quá trình cải tạo các dự án cũ có thể yêu cầu điền vào phụ thuộc PIL chỉ để chúng tôi có thể tìm thấy điều tiếp theo sẽ phá vỡ, chúng tôi thực sự cần phải có được sự phụ thuộc thực tế (và đôi khi thậm chí cần có một phiên bản cụ thể rằng ai đó đã xây dựng một hack trên).
Namey

3
@Namey Chuyển mã PIL hiện tại sang Gối có thể được thực hiện dễ dàng . Cổng PIL để gối . Gối dựa trên mã PIL và đã phát triển thành phiên bản PIL tốt hơn, hiện đại và thân thiện hơn.
GiriB

7
@GiriB Cảm ơn đã cập nhật. Quan điểm chính của tôi là thường có trường hợp bạn bắt đầu làm việc với một số mã sản xuất cũ, trong đó có 20 phụ thuộc cổ xưa, trong đó PIL có thể là một, và bạn cần gỡ lỗi một cái gì đó để sửa lỗi trong mã sản xuất. Trong trường hợp đó, bạn chắc chắn không muốn phải viết các cổng cho mã được kết nối với ~ 10 thư viện khác nhau trên bản dựng dev của bạn chỉ để bắt đầu gỡ lỗi lỗi một dòng đang xảy ra trong môi trường sản xuất. Hy vọng điều này làm rõ.
Tên

Tôi đang cố gắng sử dụng một thư viện sử dụng import Image. Có cách nào để lấy Gối cung cấp hình ảnh không?
AnnanFay

60

Điều này làm việc cho tôi:

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
Trên nền tảng 64 bit, đường dẫn được liên kết cần phải khác nhau - ví dụ: /usr/lib/x86_64-linux-gnu/libfreetype.so. Để có giải pháp độc lập hơn về kiến ​​trúc, hãy tạo các liên kết như# ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
Mark Chackerian

Luôn luôn là vấn đề tương tự đối với các tiêu đề của hình ảnh: _imagingft.c: 73: 31: lỗi nghiêm trọng: freetype / fterrors.h: Không có tệp hoặc thư mục như vậy #include <freetype / fterrors.h> Vì vậy, bạn phải cài đặt hình ảnh python
c24b

Luôn luôn là một vấn đề trong các tiêu đề freetype như được đề cập ở đây [ askubfox.com/questions/507459/ ? Thận trọng: cd / usr / bao gồm ln -s freetype2 freetype
c24b

1
dưới ubfox 14.04 1 cần thêm symlink sudo ln -s /usr/include/freetype2 /usr/local/include/freetype
Akasha

1
làm việc tốt cho tôi bí mật là PIL - chưa được xác minh - không phải tất cả bên ngoài
eusoubrasileiro

54

Nó rất đơn giản bằng cách sử dụng apt install sử dụng lệnh này để hoàn thành nó

sudo apt-get install python-PIL

hoặc là

sudo pip install pillow

hoặc là

sudo easy_install pillow

2
đừng quên khởi động lại máy chủ máy tính xách tay ipython của bạn nếu bạn đang chạy.
shousper

sudo pip cài đặt gối làm việc cho tôi. sudo apt-get install python-PIL đã không.
Yu Shen

1
Tôi thấy nó có phân biệt chữ hoa chữ thường nên: sudo apt-get install python-PIL => Thất bại (không tìm thấy gói nào) sudo apt-get install python-pil => Đã làm việc
Clarkey252

35

Trên Mac OS X, sử dụng lệnh này:

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

cũng đã làm việc trên debian jessy!, chỉ cần cài đặt python-dev trước đó :)
Agey

1
Tôi phải cài đặt libjpeg trước: brew install libjpeg
Pierre F

Cuối cùng là một giải pháp thực tế. Máy Mac của tôi không có apt-get: p và dù sao tôi cũng muốn cài đặt trong virtualenv.
sudo

sử dụng sudo pip cài đặt Gối - như dưới đây.
johndpope


26

Tôi đã nhận được câu trả lời từ một cuộc thảo luận ở đây :

Tôi đã thử

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

va no đa hoạt động.


8
Cân nhắc sử dụng cái này: pip install --no-index -f http://effbot.org/downloads/ -U PIL --trusted-host effbot.orgLý do tôi sử dụng cái này là vì nó là URL được liệt kê bởi gói và trên pypi.python.org/pypi/PIL
Tom Mydd ERICn

1
Tôi nhận được cảnh báo sử dụng HTTPS thay vì HTTP. Sau khi thay đổi URL, nó hoạt động rất tốt.
AnnanFay

@TomMydd ERICn Điều đó gần như đã hoạt động ngoại trừ tôi gặp lỗi trình biên dịch trong đó không thể tìm thấy X11 / Xlib.h
Không phổ biến

@Uncommon Tôi không chắc vấn đề là gì, xin lỗi.
Tom Mydd ERICn

21

Tải về

pip install Pillow

Sau đó, chỉ cần nhập vào tệp của bạn như,

from PIL import Image

Tôi đang sử dụng cửa sổ. Đó là làm việc cho tôi.

GHI CHÚ :

Gối là một thay thế chức năng thả xuống cho Thư viện hình ảnh Python. Để chạy mã tương thích PIL hiện tại của bạn với Gối, nó cần được sửa đổi để nhập mô-đun Hình ảnh từ không gian tên PIL thay vì không gian tên toàn cục.

tức là thay đổi:

import Image

đến:

from PIL import Image

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


Cảm ơn! Khi đọc tên 'PIL' trong from PIL import Imagetôi không bao giờ có thể đoán tên của thư viện này là 'Gối'. Tôi cũng trên Windows và giải pháp của bạn đã làm việc cho tôi.
Marcos Buarque

Gối là một thay thế chức năng thả xuống cho Thư viện hình ảnh Python. Để chạy mã tương thích PIL hiện tại của bạn với Gối, nó cần được sửa đổi để nhập mô-đun Hình ảnh từ không gian tên PIL thay vì không gian tên toàn cục. Tức là thay đổi: import Imagethành from PIL import Image pypi.org/project/Pvel/2.2.1
Chandan Sharma

Cảm ơn bạn đã thông tin thêm về bckground!
Marcos Buarque

12

Tôi mang nó trên Mac. Xem Làm cách nào tôi có thể cài đặt PIL trên mac os x 10.7.2 Lion

Nếu bạn sử dụng [homebrew] [], bạn có thể cài đặt PIL chỉ với brew install pil. Sau đó, bạn có thể cần thêm thư mục cài đặt ($(brew --prefix)/lib/python2.7/site-packages ) vào PYTHONPATH của mình hoặc thêm vị trí của chính thư mục PIL trong tệp có tên PIL.pthtệp trong bất kỳ thư mục gói trang web nào của bạn, với nội dung:

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

(giả định brew --prefix/usr/local ).

Ngoài ra, bạn chỉ có thể tải xuống / xây dựng / cài đặt nó từ nguồn:

# 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

Tôi đã chạy ở trên ngay bây giờ (trên OSX 10.7.2, với XCode 4.2.1 và System Python 2.7.1) và nó được xây dựng tốt, mặc dù có khả năng một cái gì đó trong môi trường của tôi không mặc định.

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


Mặc dù điều này giải thích cách cài đặt pil, nhưng nó không thực hiện được pipnhư OP đã thử ban đầu. Tôi tìm thấy việc sử dụng phong phú brewtrên web những ngày này không tối ưu. brewsẽ cài đặt khá nhiều chi phí tùy thuộc vào những gì bạn muốn nó làm. vì vậy pipcó lẽ vẫn sẽ là lựa chọn tốt nhất cho các mô-đun python.
mknaf

11

Ngày nay, mọi người đều sử dụng Gối, một ngã ba PIL thân thiện, qua PIL.

Thay vì: sudo pip install pil

Làm: sudo pip install pillow

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

Tôi sẽ khuyên bạn không bao giờ làm sudo pip install .... Điều đó có thể sẽ phá vỡ cài đặt Python của hệ thống của bạn, điều này có thể ảnh hưởng đến các ứng dụng trong hệ thống của bạn. Hãy thử sử dụng môi trường ảo Anaconda , venv hoặc Docker.
n1k31t4

11

Đối với Ubuntu, PIL không hoạt động nữa. Tôi luôn nhận được:

Không tìm thấy phân phối phù hợp cho PIL

Vì vậy, cài đặt python-hình ảnh:

sudo apt-get install python-imaging

6

Tôi có cùng một vấn đề, nhưng nó được giải quyết với việc cài đặt python-dev .

Trước khi cài đặt PIL, hãy chạy lệnh sau:

sudo apt-get install python-dev

Sau đó cài đặt PIL:

pip install PIL

10
Điều này không hoạt động với tôi trên Ubuntu 14. pip install pilkết quả là No distributions at all found for PIL, dù tôi có cài đặt python-dev trước hay không.
aliteralmind

5

Tôi đã có một số lỗi trong khi cài đặt. Chỉ trong trường hợp ai đó cũng có điều này. Mặc dù tôi đã ngồi dưới quyền quản trị viên, nhưng không 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

Thêm "sudo" đã giải quyết vấn đề, với sudo nó đã hoạt động:

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

5

Đối với CentOS:

yum install python-imaging

5

Tôi đã thử tất cả các câu trả lời, nhưng không thành công. Trực tiếp lấy nguồn từ trang web chính thức và sau đó xây dựng cài đặt thành công.

  1. Tới trang web http://www.pythonware.com/products/pil/#pil117
  2. Nhấp vào "Thư viện hình ảnh Python 1.1.7 Bộ công cụ nguồn" để tải xuống nguồn
  3. tar xf Imaging-1.1.7.tar.gz
  4. cd Imaging-1.1.7
  5. sudo python setup.py install


3

Thử cái này:

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

2
Trong khi câu trả lời này có thể đúng, xin vui lòng thêm một số giải thích. Truyền đạt logic cơ bản quan trọng hơn là chỉ đưa ra mã, bởi vì nó giúp OP và các độc giả khác tự khắc phục vấn đề này và các vấn đề tương tự.
CodeMouse92

Lưu ý rằng lệnh này đã hết thời gian cho tôi. Dù sao, nó sẽ bị phản đối trong một vài tuần. sudo pip install --allow-external --allow-unverified PIL PILcũng có thể làm việc cho bây giờ.
Học thống kê bằng ví dụ

3
--allow-external--allow-unverifiedđều bị phản đối pip install pillowlà câu trả lời đúng
Dorian

1
Câu trả lời tôi đã được đề xuất cho tôi bởi stderr. Vì vậy, trong khi câu trả lời của tôi đã hết hạn, đó không phải là lúc tôi viết nó. Ngoài ra, tôi xin lỗi vì tin nhắn của tôi hướng đến JasonMc92 (đã bị xóa). Giọng điệu của tôi đã hết, nhưng tình cảm của tôi vẫn còn. Có điều gì đó khó chịu về việc troll trang đầu và sao chép / dán ghi chú của bạn về "truyền đạt logic cơ bản". Có lẽ bạn đang theo đuổi huy hiệu và tôi đoán điều đó tốt, nhưng để thống nhất, xin vui lòng để lại nhận xét về tất cả các câu trả lời tương tự khác cho câu hỏi này không theo logic.
alfonso


3
  • Trước tiên, bạn nên chạy cái này sudo apt-get build-dep python-imagingsẽ cung cấp cho bạn tất cả các phụ thuộc mà bạn có thể cần

  • Sau đó chạy sudo apt-get update && sudo apt-get -y upgrade

  • Theo dõi bởi sudo apt-get install python-pip

  • Và cuối cùng cài đặt Pil pip install pillow


2

Tìm kiếm trên trình quản lý gói trước khi sử dụng pip. Trên Arch linux bạn có thể lấy PIL bằng cáchpacman -S python2-pillow


0

Có một công cụ gói Python khác được gọi là conda . Conda được ưu tiên (tôi tin) hơn pip khi có các thư viện cần cài đặt C ++ và các ràng buộc khác không phải là Python thuần túy. Conda bao gồm cả pip trong quá trình cài đặt, vì vậy bạn vẫn có thể sử dụng pip, nhưng bạn cũng nhận được những lợi ích của conda.

Conda cũng cài đặt IPython , pil và nhiều thư viện khác theo mặc định. Tôi nghĩ bạn sẽ thích nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.