pythonのpip3 install python-hdf4でエラー

CentOS7でpythonライブラリのインストール中にエラーが発生した。

$pip3 install python-hdf4
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting python-hdf4
  Downloading https://files.pythonhosted.org/packages/2c/b3/051909e55bcb3639a25e4b6740a86f7f23caa34058916edcd2495a48ff1c/python-hdf4-0.9.2.tar.gz (123kB)
    100% |████████████████████████████████| 133kB 1.4MB/s 

中略

    gcc -pthread -shared -Wl,-z,relro -g build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L -L/usr/lib -L/usr/local/lib -L/lib -L/usr/lib64 -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so
    /usr/bin/ld: -lmfhdf が見つかりません
    /usr/bin/ld: -ldf が見つかりません
    collect2: エラー: ld はステータス 1 で終了しました
    error: Command "gcc -pthread -shared -Wl,-z,relro -g build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L -L/usr/lib -L/usr/local/lib -L/lib -L/usr/lib64 -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so" failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-129etehm/python-hdf4/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-idn4m5wj-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-129etehm/python-hdf4/

内容はmfhdfとdfが見つからない、ということ。
ここで間違いをひとつ犯した。
/usr/lib64/hdfに似たようなライブラリがある。

$ls /usr/lib64/hdf
libdf.a  libhdf4.settings  libmfhdf.a

だけどmfhdf.aとdf.aはない。
ライブラリが出来ていないと勘違して、他のライブラリをインストールするなど試行錯誤してしまった。

僕はldコマンドの-lオプションの意味を知らなかった。
-lmfhdf -ldfということは、libmfhdf.aとlibdf.aを探すということらしい。
常識のようだ…。orz

ということで、pip3にライブラリ検索パスを伝える必要がある。
この場合は便利な環境変数があるということです。
早速以下を実行。

$export LD_LIBRARY_PATH=/usr/lib64/hdf

LD_LIBRARY_PATHは一時的に共有ライブラリの検索パスに追加できるということです。

python-hdf4を無事インストール出来ました。

$pip3 install python-hdf4
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting python-hdf4
  Downloading https://files.pythonhosted.org/packages/2c/b3/051909e55bcb3639a25e4b6740a86f7f23caa34058916edcd2495a48ff1c/python-hdf4-0.9.2.tar.gz (123kB)
    100% |████████████████████████████████| 133kB 1.6MB/s 
Installing collected packages: python-hdf4
  Running setup.py install for python-hdf4 ... done
Successfully installed python-hdf4-0.9.2

追伸)
pip3 install python-hdf4はpip3 install pyhdfと同じみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です