2009-09-25 37 views
20

Tôi đã giết nửa ngày cố gắng biên dịch matplotlib cho python trên Snow Leopard. Tôi đã sử dụng các googles và tìm thấy trang hữu ích này (http://blog.hyperjeff.net/?p=160) nhưng tôi vẫn không thể làm cho nó để biên dịch. Tôi thấy nhận xét từ những người dùng khác trên trang đó, vì vậy tôi biết tôi không đơn độc.Biên dịch Matplotlib cho Python trên Snow Leopard

Tôi đã cài đặt độc lập zlib, libpng và freetype.

Tôi chỉnh sửa các tập tin make.osx chứa này ở đầu trang:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

sau đó tôi chạy:

sudo make -f make.osx mpl_build 

mà mang lại cho tôi:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" &&\ 
    export MACOSX_DEPLOYMENT_TARGET=10.6 &&\ 
    export CFLAGS="-Os -arch x86_64 -arch i386 -I/usr/local/include" &&\ 
    export LDFLAGS="-arch x86_64 -arch i386 -L/usr/local/lib" &&\ 
    python2.6 setup.py build 

... snip ... 

gcc-4.2 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -Os -arch x86_64 -arch i386 -I/usr/local/include -pipe -DPY_ARRAYAUNIQUE_SYMBOL=MPL_ARRAY_API -I/Library/Python/2.6/site-packages/numpy/core/include -I. -I/Library/Python/2.6/site-packages/numpy/core/include/freetype2 -I./freetype2 -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/ft2font.cpp -o build/temp.macosx-10.6-universal-2.6/src/ft2font.o 
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++ 
In file included from src/ft2font.h:13, 
       from src/ft2font.cpp:1: 
/usr/local/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory 

... snip ... 

src/ft2font.cpp:98: error: ‘FT_Int’ was not declared in this scope 
/Library/Python/2.6/site-packages/numpy/core/include/numpy/__multiarray_api.h:1174: warning: ‘int _import_array()’ defined but not used 
lipo: can't open input file: /var/tmp//ccDOGx37.out (No such file or directory) 
error: command 'gcc-4.2' failed with exit status 1 
make: *** [mpl_build] Error 1 

Tôi vừa mất.

+0

'make.osx' sẽ tự động tải về freetype/libpng/zlib. –

Trả lời

7

Theo thông báo lỗi của bạn, bạn thiếu tiêu đề freetype. Bạn có thể định vị chúng bằng các chức năng tìm kiếm hệ thống không. Tôi sẽ không thuyết trình về việc sử dụng một gói phần mềm được xây dựng trước vì tôi yêu đầu gãi và biên dịch từ đầu.

+0

Cảm ơn whatnick. Điều đó đã giúp tôi chỉnh sửa makefile makefile. – Greg

0

Tôi chỉ có nó để biên dịch. Tôi đã thêm freetype2 trong đường dẫn bao gồm cho CFLAGS trong tệp make.osx. Bây giờ phần trên của make.osx là:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include -I${PREFIX}/include/freetype2" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

Sau đó, tôi chạy các lệnh này, và nó được biên dịch và cài đặt hoàn hảo.

sudo make -f make.osx mpl_build 
sudo make -f make.osx mpl_install 
+0

Vậy thì tôi đã nhận được câu trả lời - phát ngay. – whatnick

+0

Bạn chắc chắn đã làm - cảm ơn rất nhiều whatnick! – Greg

-1

Bạn thực sự nên hỏi điều này trong danh sách gửi thư của người dùng matplotlib. Nó được giám sát bởi các nhà phát triển matplotlib thực tế, mà StackOverflow (AFAIK) thì không.

3

Bạn cũng có thể xây dựng bằng cách sử dụng

$ python setup.py build 

với các bản vá sau áp dụng cho setupext.py

Index: setupext.py 
=================================================================== 
--- setupext.py (revision 7917) 
+++ setupext.py (working copy) 
@@ -334,6 +334,8 @@ 

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
+ module.include_dirs.append('/usr/local/include') 
+ module.include_dirs.append('/usr/local/include/freetype2') 
    module.library_dirs.extend(libdirs) 

def getoutput(s): 
+0

Điều này làm việc cho tôi. – Markus

0

như đề xuất ở nơi khác, macports hoạt động tốt trên nhiều kiến ​​trúc và các phiên bản của MacOSX + cho phép cập nhật và hơn thế nữa:

$ port search matplot 
py-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py25-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py25-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py26-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py26-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

Found 6 ports. 
$ 

trong trường hợp của bạn, chỉ cần phát hành:

$ sudo port install py26-matplotlib 

nó tính năng phụ trợ macosx (cacao tự nhiên) như mặc định

1

Đối Python.org 2.7.1:

tôi đã sử dụng một hỗn hợp của các hướng dẫn. Về cơ bản nó làm việc bằng cách sử dụng các libpng trong OSX của/usr/X11

  1. Downloaded, xây dựng và lắp đặt (make install) freetype2 v2.4.4 & zlib v1.2.5. Không sử dụng làm deps.

  2. Nội dung thiết lập đã sửa đổi.py có

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
    module.include_dirs.append('/usr/local/include') 
    module.include_dirs.append('/usr/local/include/freetype2') 
    module.include_dirs.append('/usr/X11/include') 
    module.library_dirs.extend(libdirs) 
    module.library_dirs.append('/usr/local/lib') 
    module.library_dirs.append('/usr/X11/lib') 
    
  3. make.osx Modified để bao gồm các giống usr thông tin// X11, png phiên bản 1.2.5 là OSX 10.6.6 hiện nguồn gốc

    PYVERSION=2.7 
    
    PYTHON=python${PYVERSION} 
    
    ZLIBVERSION=1.2.5 
    
    PNGVERSION=1.2.44 
    
    FREETYPEVERSION=2.4.4 
    
    MACOSX_DEPLOYMENT_TARGET=10.6 
    
    OSX_SDK_VER=10.6 
    
    ARCH_FLAGS="-arch i386-arch x86_64" 
    
    PREFIX=/usr/local 
    
    MACPREFIX=/usr/X11 
    
    PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
    
    CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -I${MAXPREFIX}/include -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -L/usr/X11/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    FFLAGS="-arch i386 -arch x86_64" 
    
  4. Sau đó, các tiêu chuẩn

    sudo make -f make.osx mpl_build 
    sudo make -f make.osx mpl_install 
    sudo python setup.py install 
    
  5. Crikey ... có vẻ hoạt động. Bây giờ có hình ảnh & MDP & pylab & matplotlib với 2.7.1 trên 10.6.6

mô-đun hình ảnh (Imaging-1.7.7) hoạt động ổn miễn là bạn cài đặt libjpeg. Tôi đã sử dụng jpegsrc.v8c và dường như đủ hài lòng.

6

Giải pháp này làm việc cho tôi trên OSX 10.8.3:

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

(tín dụng thực sự đi vào: http://simpleyuan.blogspot.com/2012/08/matplotlib-error-mac-os-x.html)

+0

Giải pháp này làm việc cho tôi trên OSX 10.8.3: 'ln -s/opt/local/include/freetype2/freetype// usr/include/freetype' – scls

+4

Đối với Homebrew:' ln -s/usr/local/include/freetype2// usr/include/freetype' – sakra

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