2016-03-28 29 views
6

Tôi không biết tại sao những gói này luôn luôn là một nỗi đau để cài đặt. Tôi đã sử dụng NetCDF/HDF5 trong một thời gian dài và luôn là một chuyến đi kinh dị tinh khiết khiến họ cài đặt hoặc chạy đúng cách, cho dù đó là trên Linux hay OSX, cho dù C, C++ hay bây giờ là python. Sự phụ thuộc đơn giản giữa netcdf4 và hdf5 là một nguồn gây đau đớn lớn cho nhiều người và tôi thực sự mong các nhà phát triển của những gói đó cuối cùng sẽ làm điều gì đó về nó.Python, NetCDF4 và HDF5

Vì vậy, vấn đề cụ thể mới nhất mà tôi đang gặp phải là: Tôi đang cố gắng cài đặt netCDF4 cho python. Tôi nhận được lỗi sau:

Package hdf5 was not found in the pkg-config search path 
Perhaps you should add the directory containing `hdf5.pc' 

Tôi cố gắng để cài đặt các gói hdf5 sử dụng apt-get, bao gồm:

  • libhdf5-sê-ri-dev
  • libhdf5-sê-ri
  • libhdf5-7
  • python-h5py
  • libhdf5-dev
  • hdf5-tools
  • hdf5-những người giúp đỡ
  • libhdf5-7-dbg

Sử dụng pip, tôi đã cố gắng:

pip install h5py 

mà thất bại thảm hại để giải quyết một phụ thuộc vào Cython, mà tôi sau đó cài đặt bằng tay. Sau đó nó được cài đặt (rõ ràng) nhưng tôi không thể tìm thấy tập tin hdf5.pc bất cứ nơi nào.

Tôi đang kéo sợi lông ra khỏi đây. Có ai biết cách giải quyết vấn đề này không?

+3

Bạn đã cân nhắc sử dụng Anaconda chưa? Tất cả các vấn đề cài đặt của bạn sẽ biến mất :) – jhamman

Trả lời

1

Khi bạn trộn các gói phân phối và gói tự xây dựng, bạn đang tăng cơ hội gặp sự cố (như bạn đang tìm ra).

Ngoài ra, bạn có muốn h5py hoặc bạn muốn netcdf-python không? Tôi không nghĩ netcdf-python có một phụ thuộc vào h5py. Thay vào đó, netcdf-python liên kết với thư viện C netcdf, do đó phụ thuộc vào thư viện C HDF5.

h5py tương tự như vậy liên kết với C HDF5

Có rất nhiều phần mềm liên quan, đó là sự thật. Làm việc theo cách của bạn thông qua từng bước và nó sẽ làm cho ý nghĩa hơn cuối cùng (nói rằng những người đã làm điều này trong 15 năm ... nó được dễ dàng hơn!)

  1. Nếu bạn đang làm bất kỳ lập trình song song, bạn sẽ cần triển khai MPI
  2. HDF5 hiện cung cấp nền tảng cho NetCDF4. Nếu bạn muốn lập trình song song, hãy xây dựng HDF5 để thực thi MPI của bạn.
  3. Cài đặt thư viện C NetCDF4
  4. nay là bindings python có thể nhận những gì họ cần từ NetCDF4, HDF5, và Bộ KH & ĐT

Có nó là rất nhiều phần mềm để cấu hình và xây dựng. pkg-config có thể giúp ích rất nhiều ở đây! Khi bạn thấy Package hdf5 was not found in the pkg-config search path, điều đó có nghĩa là bạn nên điều chỉnh PKG_CONFIG_DIR để trỏ đến vị trí của các tệp cấu hình gói.Thật không may, hdf5 không cung cấp tệp .pc (gói-config), vì vậy bạn sẽ phải thực hiện phần đó bằng tay. Oh, và netcdf không cung cấp một pkg-config hoặc: nó cung cấp một kịch bản nc-config mà netcdf-python sẽ sử dụng.

Hãy để tôi cung cấp một ví dụ cụ thể:

  • MPICH-master được cài đặt trong /home/robl/soft/mpich-master
  • HDF5 cài đặt trong /home/robl/soft/hdf5-1.8.16
    • ví dụ cấu hình như ../../hdf5-1.8.16/configure --prefix=/home/robl/work/soft/hdf5-1.8.16 CC=/home/robl/work/soft/mpich/bin/mpicc --enable-parallel
  • NetCDF4 cài đặt trong /home/robl/soft/netcdf-master
    • ví dụ: cấu hình như ./configure CC=${HOME}/work/soft/mpich/bin/mpicc --prefix=${HOME}/work/soft/netcdf-master CPPFLAGS=-I${HOME}/work/soft/hdf5-1.8.16/include LDFLAGS=-L${HOME}/work/soft/hdf5-1.8.16/lib

bây giờ bạn có tất cả các pre-requisietes cho netcdf-python

bằng cách này, http://unidata.github.io/netcdf4-python/ đưa ra các điều kiện tiên quyết và các tùy chọn cấu hình cần thiết

Đừng treo lên trên carping về hdf5.pc. Nếu bạn có nc-config trong đường dẫn của mình, nó sẽ cung cấp thông tin cần thiết.

Nếu bạn đang xây dựng lập trình song song, hãy đặt CC thành trình biên dịch MPI của bạn. nếu không, bạn có thể bỏ qua `` xuất CC = ... '' bước:

cd netcdf-python 
export CC=${HOME}/work/soft/mpich/bin/mpicc 
export PATH=${HOME}/work/soft/netcdf-master/bin:${PATH} 
python setup.py build 
Các vấn đề liên quan