2017-02-10 9 views
0

私のシステムにはCentOS release 6.8 (Final)があります。igraph-pythonのインポートに問題があります

ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/abolfazl/.python-eggs/python_igraph-0.7.1.post6-py2.7-linux-x86_64.egg-tmp/igraph/_igraph.so) 

私は同様の質問を検索し、いくつかの答えを見つけました:私はエラーを取得するパッケージをインポートしようとすると、私は

conda install -c marufr python-igraph=0.7.1.post6 

igrph-pythonをintalledています。私はそれらをthis oneのように試しました。 しかし、まだ、私はImportErrorを取得します。 解決策はありますか? どうもありがとう

答えて

1

TL; DR:

readelf --version-info /root/.cache/Python-Eggs/python_igraph-0.7.1.post6-py2.7-linux-x86_64.egg-tmp/igraph/_igraph.so | grep -Po '(?<=GLIBC_)([\d.]*)' | sort -Vr | head -1 
2.14 

readelf --version-info /root/.cache/Python-Eggs/python_igraph-0.7.1.post6-py2.7-linux-x86_64.egg-tmp/igraph/_igraph.so | grep -Po '(?<=GLIBCXX_)([\d.]*)' | sort -Vr | head -1 
3.4.15 

はのは、システムが提供するか見てみましょう::

conda install -yc nehaljwani python-igraph=0.7.1.post6 

さて、依存関係が共有ライブラリのために存在するバージョン管理された見てみましょう

strings /lib64/libc.so.6 | grep -Po '(?<=GLIBC_)([\d.]*)' | sort -Vr | head -1 
2.12 

strings /usr/lib64/libstdc++.so.6 | grep -Po '(?<=GLIBCXX_)([\d.]*)' | sort -Vr | head -1 
3.4.13 

ご覧のとおり、3.4.13は<です3.4.15および2.12は< 2.14であり、したがって共有ライブラリ_igraph.soはロードされません。

オルタナティブ1:使用condaのgccとlibxml2のビルドパッケージを構築するための

さて、あなたはいくつかのオプションを得たので。

yum install -y gcc-c++ libxml2-devel 
bash Miniconda2-4.2.12-Linux-x86_64.sh -b -p ~/m2 
source ~/m2/bin/activate 
conda install -y conda-build 
conda install -yc marufr python-igraph=0.7.1.post6 
conda install -y gcc libxml2 
export LD_LIBRARY_PATH=~/m2/lib/ 
conda build $CONDA_PREFIX/pkgs/python-igraph-0.7.1.post6-py27_0/info/recipe/ 
conda remove -y python-igraph 
conda install $CONDA_PREFIX/conda-bld/linux-64/python-igraph-0.7.1.post6-py27_0.tar.bz2 
python -c 'import igraph; print igraph.__version__' 
0.7.1 

私はcondaからのgccを使用して、私はパッケージをテストしながら、それは$CONDA_PREFIX/lib/libstdc++.soの代わりに、システムのlibstdc++.soを選ぶだろうように、LD_LIBRARY_PATHを設定する必要がありましたことをここに注意してください。したがって、次にパッケージを作成するときは、gccをcondaを使用してインストールする必要があります。 Meh、あまりにも多くの仕事。

2オルタナティブ:パッケージをビルドしますが、この時間は、私はLD_LIBRARY_PATHをエクスポートして、古いシステムライブラリに依存していなかったことを利用システムのgccとlibxml2の

yum install -y gcc-c++ libxml2-devel 
bash Miniconda2-4.2.12-Linux-x86_64.sh -b -p ~/m2 
source ~/m2/bin/activate 
conda install -y conda-build 
conda install -yc marufr python-igraph=0.7.1.post6 
conda build $CONDA_PREFIX/pkgs/python-igraph-0.7.1.post6-py27_0/info/recipe/ 
conda remove -y python-igraph 
conda install $CONDA_PREFIX/conda-bld/linux-64/python-igraph-0.7.1.post6-py27_0.tar.bz2 
python -c 'import igraph; print igraph.__version__' 
0.7.1 

注意。このパッケージを使用するたびにcond30を使用してgccをインストールする必要はありません。しかし、まだ、あまりにも多くの仕事、meh。 4 _igraph.so

yum install -y gcc-c++ libxml2-devel 
bash Miniconda2-4.2.12-Linux-x86_64.sh -b -p ~/m2 
source ~/m2/bin/activate 
pip install python-igraph==0.7.1.post6 
python -c 'import igraph; print igraph.__version__' 
0.7.1 

オルタナティブ:

代替3.レッツは、共有ライブラリのコンパイルを行うPIP私はあなたのためのパッケージを構築し、自分のチャンネルでそれを入れています。お気軽にご使用ください:-)

bash Miniconda2-4.2.12-Linux-x86_64.sh -b -p ~/m2 
source ~/m2/bin/activate 
conda install -yc nehaljwani python-igraph=0.7.1.post6 
python -c 'import igraph; print igraph.__version__' 
0.7.1 

代替機能4は今のところもっとも簡単ですが、なぜ機能しますか?今度はそれの依存関係を見てみましょう:

readelf --version-info /root/.cache/Python-Eggs/python_igraph-0.7.1.post6-py2.7-linux-x86_64.egg-tmp/igraph/_igraph.so | grep -Po '(?<=GLIBCXX_)([\d.]*)' | sort -Vr | head -1 
3.4 

readelf --version-info /root/.cache/Python-Eggs/python_igraph-0.7.1.post6-py2.7-linux-x86_64.egg-tmp/igraph/_igraph.so | grep -Po '(?<=GLIBC_)([\d.]*)' | sort -Vr | head -1 
2.7 

あなたが見ることができるように、3.4は< 3.4.152.7であること< 2.12ので、共有ライブラリ_igraph.soは今

+0

優れた:-)システムの古いライブラリをロードしています。ありがとうございました。 – Abolfazl

関連する問題