エラー記録と対処

"No module named clawutil"というエラー

make dataの実行でこのpython上のエラーが発生.

その1

echo $PYTHONPATH

を実行した際に,$CLAWと同じパスが含まれているのを確認した上で,python上で

In [1]: import clawpack
In [2]: from clawpack import clawutil

ができるか確認.2行目でエラーが出るはず.

ls -l $CLAW/clawpack/

で見ると,"/raid/xxx/"と環境依存のリンク元となっており,リンクとして機能していなかったことが原因.リンク元をlnで貼り直した.

初期設定では絶対パスのリンクになっており,$CLAW のパスが変わると毎回リンクを修正することになるので,相対パスにしておいたほうが良い.

cd $CLAW/clawpack
ln -fs ../amrclaw/src/python/amrclaw amrclaw 
ln -fs ../classic/src/python/classic classic 
ln -fs ../clawutil/src/python/clawutil clawutil 
ln -fs ../pyclaw/src/forestclaw forestclaw 
ln -fs ../geoclaw/src/python/geoclaw geoclaw 
ln -fs ../pyclaw/src/petclaw petclaw 
ln -fs ../pyclaw/src/pyclaw pyclaw
ln -fs ../riemann/src riemann 
ln -fs ../visclaw/src/python/visclaw visclaw

その2

上の設定ができていても 'No module named clawpack.clawutil.data' のようなエラーが出た.
python コマンドのデフォルトが python2 なのか python3 なのかを確認したら,2系だった.
ベースの Makefile である $CLAW/clawutil/src/Makefile.common の PYTHON を python3 に書き換えると安全.

PYTHON ?= python3
CLAW_PYTHON ?= $(PYTHON)

安易に /usr/bin/python のリンクを張り替えたり,rc ファイルで alias をつけると,他のパッケージとの依存関係でおかしくなる可能性があるのでやるなら慎重に.


同一のtopography(地形データ)ファイルを読めない

ある実行ファイルxgeoclawが地形ファイルを読んでいる途中に別の実行ファイルが同じ地形ファイルを読もうとするとエラーになる.
$GEOLIBのtopo_module.f90の中のopen文が,status='unknown'でactionは未指定になっているから.

open(xx,...,status='unknown',action='read')

にすれば解決する.

NetCDF, curl, OpenSSLの依存関係によるコンパイルエラー

NetCDFを有効にしてgeoclawをコンパイルすると,下記のようなエラーが出てきて,実行ファイルxgeoclawが生成できなかった.

/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_cleanup@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_perform@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_setopt@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_strerror@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_init@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_easy_getinfo@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_version_info@CURL_OPENSSL_3'
/usr/local/netcdf-4.6.1/lib/libnetcdf.so: undefined reference to `curl_global_init@CURL_OPENSSL_3'
/home/miyashita/AMR/clawpack/clawutil/src/Makefile.common:139: recipe for target 'xgeoclaw' failed

以前にcurlを再インストールした記憶があり,その時のcurl, opensslの環境がNetCDFをインストールした時と違うから…???
のような気がしたので,今の環境でNetCDF Cを再インストールした.configureは下記の通り.

./configure --prefix=${NCDIR} --enable-netcdf-4 --enable-shared --enable-dap

オプションの最後, --enable-dapは Running the configure Script

--enable-dap
      Enable DAP support. The configure script will attempt to locate the curl and xml2 libraries, 
      but if it fails, then it is necessary to specify their location using –with-xml2=/some/path and –with-curl=/some/path.
      It is assumed that the directories /some/path/include and /some/path/lib exist. 

と書いてあるので重要だと思う. NetCDFを再インストールしたらエラーがなくなった.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2020-04-28 (Tue) 07:26:29 (177d)