どのように私はf2pyとFORTRANのプログラムからPythonモジュールを作成するのですか?
質問
私は、PythonでいくつかのSMPSファイルを読み取ろうとすると、FORTRAN実装を見つけたので、私は、私はショットをf2py与えるだろうと思っています。問題は、私はFortranの経験がないということです。
私は正常に私のLinuxマシン上のgfortranとf2pyをインストールしてthew f2pyページの例を走ったが、私はいくつかのトラブルに大きなプログラムをコンパイルし、実行しているしています。二つのファイル、ファイルリーダーラッパーとすべてのロジックを1と1があります。彼らはお互いを呼び出すように見えるが、私はf2pyコンパイルとリンクまたはしようとしたとき、私は、彼らが何らかの形でお互いを見つけることができないというエラーが出ます:
f95 -c FILEWR~1.F
f95 -c SMPSREAD.F90
f95 -o smpsread SMPSREAD.o FILEWR~1.o
FILEWR~1.o In function `file_wrapper_'
FILEWR~1.F(.text+0x3d) undefined reference to `chopen_'
usrlibgcci486-linux-gnu4.4.1libgfortranbegin.a(fmain.o) In function `main'
(.text+0x27) undefined reference to `MAIN__'
collect2 ld returned 1 exit status
私もFILE_WRAPPER.Fに名前を変更しようとしたが、それは助けにはならなかった。
f2pyで、私は、私はそれが自由な形式を受け入れるように取得するためのコメントを含める必要がありましたし、新しいファイルとしてこれを保存してみましたが判明ます:
f2py -c -m smpsread smpsread.f90
私は出力と警告の多くを得るが、エラーは、この1のようです。
getctype: No C-type found in "{'typespec': 'type', 'attrspec': ['allocatable'], 'typename': 'node', 'dimension': [':']}", assuming void.
FORTRAN 90人のSPMSリーダここを見つけることができます。
すべてのヘルプや提案をいただけれます。
解決
私は完全にFortranのビジネスをスキップお勧めします。
http://myweb.dal.ca/gassmann/smps2.htmする
MPSのレコードレイアウトは、ここで説明した、とPythonに間隔を選択する比較的簡単に見えますされます。
http://myweb.dal.ca/gassmann/smps2.htm#CoreMPSline の
あなたはとにかくすべてのデータのための適切なPythonのクラス(またはnamedtuples)を定義する必要があります。
私はFortranが支援しています。
とは思いません