2016-11-09 12 views
2

私は私のLinux(Ubuntuの15.10)上のいくつかのアナコンダ/ Pythonパッケージをアップデートしなければならなかった、そしてその結果として、私は今、私が前に見たことがない、次のエラーメッセージが出ます:OSErrorの:未定義のシンボル

OSError: /usr/lib/x86_64-linux-gnu/libnetcdff.so.6: undefined symbol:nc_rename_grp 

PythonスクリプトでFortranベースのプログラムを呼び出すと、エラーが発生します。しかし、Pythonなしで全く同じプログラムを実行すると、すべて正常に動作します...

私はまた、更新後にプログラムを再コンパイルしましたが、何も変更されませんでした。

ここで何が起こっているのか分かりませんか?

+0

私はanacondaがディレクトリ構造のどこかに独自のnetcdfライブラリバージョンを提供していると思います。おそらくanacondaから実行されたときにanaconda libバージョン(余分なシンボルがあるかもしれません)を使用することを期待していますが、あなたの 'LD_LIBRARY_PATH'またはそれと同様の手段がシステムバージョンをピックアップしている(あるいはその逆) 。 「fortranベース」のプログラムとその実行方法について少し詳しく説明できますか?つまり、実行可能ファイルを実行するためにPythonでシステムコールを使用していますか?もしそうなら、あなたは 'ldd myExecutable'をpythonと外部のpythonから行うことができます。 –

+0

英国英語では、プログラムはコンピュータプログラムとそのプログラミングを指し、プログラムはその言葉の他のすべての意味で使用されます。 –

答えて

0

シンボルnc_rename_grpは、libnetcdf.soで定義されています。すべてのあなたの助けを

env["LD_LIBRARY_PATH"] = "/usr/lib/x86_64-linux-gnu" 
h = subprocess.Popen(cmd,env=env) 
0

感謝を:あなたは、サブプロセスを使用してFORTRANのコードを実行している場合、あなたは次のようにENVを宣言する必要があります。この問題は、./bashrcのnetcdf-librariesへのパスが正しく設定されていないために発生したため、プログラム(コンピュータプログラム/モデル)が正しく動作しませんでした。すべてが今解決され、プログラム/モデルが起動しています!