sshを介してリモートマシンで作業していますが、Sudo権限がありません。現在、私はpythonプロジェクトを実行しようとしています。古いバージョンのopenblasが原因で) this プロジェクトを複製することにより、Openblasの現在のバージョンを手動でコンパイルすることを余儀なくされました。Kerasは古いライブラリでもう苦労していませんが、pythonがこの行にヒットすると、新しい問題が発生しました:
from sklearn.model_selection import GridSearchCV
エラー/usr/lib/libblas.so.3: undefined symbol: gotoblas
。
そこにはいくつかの同様の問題がありますが、単に削除することはできませんlibopenblas-base
Sudo権限がないため、一部のソリューションで提案されているとおり。
問題の原因がどこにあるのかを理解できたと思います。
readelf -Ws /home/me/lib/lib/libopenblas.so.0 | grep gotoblas
1019: 0000000000283b20 256 FUNC GLOBAL DEFAULT 11 gotoblas_pthread
2556: 000000000007f200 29 FUNC GLOBAL DEFAULT 11 gotoblas_quit
2576: 000000000007f220 76 FUNC GLOBAL DEFAULT 11 gotoblas_init
2597: 0000000000faffd0 4 OBJECT LOCAL DEFAULT 24 gotoblas_initialized
9916: 0000000000283b20 256 FUNC GLOBAL DEFAULT 11 gotoblas_pthread
10873: 000000000007f220 76 FUNC GLOBAL DEFAULT 11 gotoblas_init
13330: 000000000007f200 29 FUNC GLOBAL DEFAULT 11 gotoblas_quit
ご覧のように、手動でインストールされたopenblasバージョンでは「gotoblas」は定義されていません。そのため、タイトルの例外がスローされます。私のパソコンでは、次の出力が得られます。
readelf -Ws /usr/lib/libopenblas.so.0 | grep gotoblas
....
6146: 0000000002089d30 8 OBJECT GLOBAL DEFAULT 25 gotoblas
6779: 000000000206c240 3992 OBJECT GLOBAL DEFAULT 24 gotoblas_DUNNINGTON
....
そこにそれがある!誰かがOpenBlasを手動でインストールして、上部のエラーが発生しないようにする方法を教えてもらえますか?どうやら、OpenBlasを手動でコンパイルするときにインストールされるのはごく一部です。そのディレクトリには、次のファイルが含まれています。
ls /home/me/lib/lib/
cmake libopenblas.a libopenblas.so libopenblas.so.0 libopenblas_sandybridgep-r0.2.19.a libopenblas_sandybridgep-r0.2.19.so
多分あなたは2つのバージョンのlibblasを持っています。次のように、システムにインストールされている別のライブラリを選択してみることができます。
update-alternatives --config libblas.so.3
update-alternatives --config liblapack.so.3
ただし、権限がない場合は、.bashrcファイルを変更して、LD_LIBRARY_PATHおよび場合によってはPYTHONPATH環境変数を変更する必要があります。
試してください:
locate libbas.so.3
このライブラリのバージョンがシステムにあるかどうかを確認し、そのパスを使用して、次のように.bashrcに追加します。
export LD_LIBRARY_PATH=<your library path, without file name>:$LD_LIBRARY_PATH
export LD_PRELOAD=<your library path>
私は試しませんでした...それが機能するかどうかを知らせてください。