2009-09-30 48 views
11

Tôi đang cố cài đặt pycairo (Các ràng buộc Python cho cairo graphics library) trong OSX.Làm thế nào để cài đặt pycairo trên osx?

tôi bắt đầu với

easy_install pycairo 

và nhận được:

Requested 'cairo >= 1.8.8' but version of cairo is 1.0.4 

error: Setup script exited with Error: cairo >= 1.8.8 not found 

Vì vậy, tôi đã đi vào trang web cairo và tải về các gói mới nhất (1.8.8) của cairo, và cũng là gói mới nhất của một cái gì đó được gọi là pixman (cả hai gói nguồn - không thể tìm thấy mã nhị phân osx)

giải nén cả hai, mỗi thư mục trong thư mục riêng. cho Pixman, thường xuyên ./configure ; make ; sudo make install chỉ làm việc tìm cho cairo, ./configure dường như để làm việc, nhưng làm cho thất bại với:

In file included from cairo-analysis-surface.c:37: 
cairoint.h:71:20: error: pixman.h: No such file or directory 

Tôi đang làm gì sai?

Và tại sao tôi phải đấu tranh nhiều để có được một thư viện phần mềm để làm việc trên một hệ điều hành "chỉ hoạt động"? Tại sao không phải là darwin giống như Linux?

+0

Cập nhật: Tôi đã cp'ed tất cả các tệp .h từ thư mục pixman thành của cairo. Một điều bạo lực xấu xí, nhưng nó dường như hoạt động: 'làm; sudo make install 'dường như hoạt động tốt. Tôi vẫn nhận được "Yêu cầu" cairo> = 1.8.8 'nhưng phiên bản của cairo là 1.0.4 "khi cố gắng cài đặt pycairo, mặc dù. Nó nghĩ rằng tôi có cairo 1.0.4, và bỏ qua cái mới. Bất kỳ ý tưởng tại sao? Làm cách nào tôi có thể khắc phục điều đó? – Yoav

Trả lời

6

Ok. Tôi đã giải quyết nó. Đưa giải pháp vào đây để tham khảo trong tương lai, nó có thể giúp ai đó.

Về cơ bản, toàn bộ hệ thống cổng/fink hơi lộn xộn và osx không thực sự chơi tốt với thế giới Linux-y.

Vì vậy, các bước tôi cần phải cài đặt pycairo trên OSX là:

  • tải về phiên bản mới nhất của mã nguồn Pixman, cairo, pycairo
  • trích xuất tất cả mọi thứ. Sau đó:

    cd PIXMAN_DIR ; ./configure ; make ; sudo make install 
    cd CAIRO_DIR ; cp PIXMAN_DIR/pixman/*.h . ; ./configure ; make ; sudo make install 
    cd PYCAYRO_DIR; locate cairo.pc 
    

    hy vọng, một số địa điểm được trả về. chọn một trong những khả năng nhất (một với cairo mới nhất). Đối với tôi đó là "/opt/local/lib/pkgconfig/cairo.pc" và làm:

    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ 
    

    sau này, vẫn còn trong PYCAIRO_DIR, làm:

    python setup.py install 
    

này nên làm nó ...

+1

Tôi nghĩ rằng bạn có vấn đề bởi vì bạn đang trộn lẫn các macports fink và mã của riêng bạn với nhau - chỉ sử dụng một trong số này;) hiệu quả mỗi cái tương đương với hệ thống đóng gói của Linix. Lý do tôi nói điều này là/opt/local/bin sẽ là từ Macports chứ không phải mã của riêng bạn theo mặc định sẽ là/usr/local/bin – Mark

3

Lệnh port cài đặt thư viện để cài đặt python darwinports, khác với xây dựng khung (vì vậy bước 2 và 3 không hoạt động). Thay vào đó, hãy thử sudo easy_install pycairo (mặc dù bước 4 của bạn phải tương đương với điều này).

Nhìn vào which python quá, để kiểm tra xem bạn có thực sự đang chạy con trăn mà bạn nghĩ bạn đang sử dụng không.

+0

Tại đây (http://stackoverflow.com/questions/1500866/ Làm thế nào để cài đặt-pycairo-on-osx) là một người khác với một vấn đề tương tự –

+0

Nếu bạn không cẩn thận, sử dụng easy_install như vậy có thể làm phức tạp hơn nữa vấn đề bằng cách đưa python do Apple cung cấp vào hình ảnh và nó sẽ không giúp đỡ giải quyết vấn đề gốc. –

+0

Tôi đã Akusete để có nghĩa là ông muốn sử dụng pycairo từ xây dựng khuôn khổ Python2.6.4 của mình (bước 1). Nếu anh ta nhận được rằng làm việc ông có thể mương tất cả các công cụ python MacPorts và tránh vấn đề này trong tương lai. Nhưng giải pháp tất cả MacPorts của bạn cũng tốt. Có lý do nào để thích nó không? –

7

Dường như bạn đang trộn các tùy chọn cài đặt khác nhau tại đây. Các hệ thống gói MacPorts port install lệnh sẽ tự động kéo vào tất cả các phụ thuộc cần thiết cho một gói cụ thể để lừa là bắt đầu với dự án cấp cao nhất bên phải. Đối với gói python, MacPorts có quy ước chung hiện tại: các gói bắt đầu bằng py- là dành cho python 2.4, các gói có py25- dành cho 2.5 và py26- cho 2.6. Hiện tại có các gói py-cairo, py25-cairopy26-cairo có sẵn trong MacPorts.

Bằng cách lựa chọn py-cairo bạn chọn phiên bản python2.4 và có thể bạn sẽ thấy rằng MacPorts xây dựng và lắp đặt một python2.4 cho bạn (liên kết ở /opt/local/bin/python2.4) và, nếu bạn khởi động nó, có thể bạn sẽ thấy rằng bạn có thể nhập cairo ở đó. Bây giờ, có thể là OK cho nhu cầu của bạn nhưng Python 2.4 là khá cũ và không còn được hỗ trợ như vậy, nếu bạn chỉ mới bắt đầu, nó có thể là tốt hơn để bắt đầu với Python 2.6, một trong hai phiên bản hiện tại của Python. Để làm như vậy, tất cả các bạn nên cần phải làm là:

sudo port install py26-cairo 

Điều đó sẽ mang lại bất kỳ phụ thuộc mất tích, chủ yếu là python2.6 MacPorts, mà bạn có thể chạy từ /opt/local/bin/python2.6. Bạn có thể muốn thay đổi $PATH trong tập lệnh khởi động shell của mình, có thể là .bash_profile, để đặt /opt/local/bin sớm trên đường dẫn tìm kiếm.

Vì việc cài đặt Cairo và các ràng buộc python của nó có vẻ khá phức tạp, nên dễ dàng hơn và tốt hơn khi sử dụng giải pháp MacPort hoàn chỉnh cho việc này. Điều đó có nghĩa là bạn đã vô dụng (và vô hại) đã cài đặt một vài phiên bản Python mà bạn không cần. Nhưng nếu bạn muốn để làm sạch mọi thứ lên một chút, bạn có thể dễ dàng loại bỏ các python24 MacPorts với:

sudo port uninstall py-cairo python24 

hoàn toàn loại bỏ các python.org cài đặt python là phức tạp hơn. Tôi đã giải thích quá trình here. Nhưng không cần phải loại bỏ hoặc là miễn là bạn giữ đường thẳng của bạn.

+0

Tôi đã thử đề xuất của bạn và nó đã hoạt động thành công. Cảm ơn nhiều. Tôi nghĩ rằng vấn đề chính của tôi là tôi không biết về các cơ chế và quy ước của macports và macos nói chung. Tôi đã đọc phần giới thiệu và tài liệu về macports.org từ Macports.org nhưng tôi chưa bao giờ nhận ra số phiên bản đã được sử dụng trong tiêu đề (tôi cho rằng nó được sử dụng để giải quyết phiên bản mới nhất hoặc một cái gì đó) – Akusete

+0

Có, quy ước đặt tên trăn của MacPorts khá khó hiểu . Nếu họ đã bắt đầu bằng cách sử dụng py24- thay vì py-, nó có thể ít hơn. Vui mừng nó tất cả làm việc! –

+0

Làm thế nào để bạn có được 'cairo.HAS_QUARTZ_SURFACE' để mang lại 1? – vy32

2

Trên Mac OS, bạn có thể cài đặt nhiều phiên bản Python. Bạn có thể có nhiều hơn nếu bạn quyết định cài đặt Python thông qua Fink hoặc MacPorts. Khi bạn biên dịch thư viện từ nguồn, bạn nên đảm bảo rằng chúng trỏ đến cài đặt chính xác.

Tôi hiện đang cài đặt Python 2.5.1 và Python 2.6.4 trên máy của mình, mà tôi có thể gọi qua số python2.5python tương ứng. Chúng sống trong hai thư mục khác nhau: /System/Library/Frameworks/Python.framework/Versions/2.5/Library/Frameworks/Python.framework/Versions/2.6

Tôi đã gặp sự cố tương tự khi biên dịch pycairo 1.8.8 từ tarball. Tệp INSTALL trong trường hợp này là bạn của bạn vì nó chứa các hướng dẫn chính xác để tránh xung đột phiên bản tiềm ẩn. Về cơ bản, bạn cần xác định đúng tiền tố để gói sẽ được cài đặt trong thư mục chính xác.

 
$ python -c "import sys; print sys.prefix" 
    # make a note of the python prefix 
$ ./configure --prefix=[python_prefix] 
$ make 
$ make install  # may require superuser access 

Chạy các hướng dẫn với python2.5python bạn sẽ có thể cài đặt một cách chính xác pycairo cho cả hai phiên bản (hoặc cho bất kỳ phiên bản cài đặt thông qua MacPorts/Fink).

8

Tôi đã tìm thấy hướng dẫn this rất hữu ích và ít gây nhầm lẫn hơn nhiều. Tôi trên Yosemite và nó làm việc rất tốt cho tôi. Hướng dẫn này sử dụng homebrew để cài đặt. Vì vậy, nếu bạn đã có homebrew, hai lệnh dưới đây sẽ hữu ích:

$ brew install cairo --use-clang 
$ brew install py2cairo 

Đối với một tổ chức phi Homebrew cài đặt Python, hướng dẫn này đề nghị để thiết lập PYTHONPATH để tìm pycairo. Bạn có thể đặt PYTHONPATH trong .bashrc/.profile /.bất cứ điều gì sau đây:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH. 

Cá nhân tôi không cần sử dụng phần cuối của hướng dẫn nhưng nó có thể giúp bạn.

+0

Câu trả lời chỉ chứa liên kết được coi là thực hành không tốt (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Vui lòng tóm tắt nội dung ở đây (không sao chép/dán) để câu trả lời có thể tự đứng vững. Nếu bạn không chạy nguy cơ câu trả lời của bạn bị xóa, đặc biệt nếu liên kết đã từng chết. –

+0

Nếu bạn đang sử dụng python 3, bạn có thể sử dụng "brew install py3cairo" để thay thế. –

Các vấn đề liên quan