現在、python3スクリプトで使用するFortranサブルーチンをラップする際に問題が発生しています。この問題は、私がサブルーチンでOpenMPを使用しようとして以来起きています。例えばOpenMPでコンパイルされたf2pyモジュールのPythonインポートエラー
、私は私のスクリプトにこのモジュールをインポートしようとすると、「test.f90は」並列化ループが含まれているFortranのサブルーチンであるf2py -c -m --fcompiler=gfortran --compiler=mingw32 --f90flags='-fopenmp' test test.f90 -lgomp
を使用してモジュールのtest.pyd 'をコンパイルした場合、私はImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
に遭遇。
コンパイル時にフラグを削除するか、Fortranサブルーチンの!$omp
コメントを削除すると、このエラーが取り除かれます。
サブルーチンをほぼ同等のFortranプログラムに変更すると、プログラムは.exeにコンパイルされ、正しく実行されます。
私はちょうどあなたのビルドコマンドを試みたが、それはprefectly正常に見える
ありがとうございます。私は 'C:\ TDM-GCC-64 \ bin'をCとFortranコンパイラと' libgomp-1.dll'の両方を含む私のPATHに含めました。 最初はiPythonコンソール(Anaconda3で動作)からスクリプトを実行していましたが、問題を単純化するために、Python3コンソールを開き、 'import test'と入力するだけで同じ効果が得られました。もちろん正しいディレクトリ) –
あなたのスクリプトがあるディレクトリに普通の 'cmd'コンソールを開き、' python your_script.py'を実行するとどうなりますか?同じエラーが発生しますか? (anaconda pythonコンソールではない)。 AnacondaがあなたのPATHを乱しているかもしれません。 – Thundzz
残念ながら、私はPython 3.6.0で同じエラーが発生します。私はシステムPATHからAnaconda3を削除し、OpenMPフラグを付けずにコンパイルするとモジュールが正常にインポートされ、フラグを再導入すると元のエラーが出ます。 私はちょうど 'cmd'コンソールに行っている 、および入力された私のPython36フォルダに.pydファイルの両方を追加した後: 'インポートnumpy'エラーが最後の行の後に表示されます '輸入 omp_test_mod' '輸入test_mod'従来通り。 'libgomp-1.dll'は実際にPATHに入っていることを示しています。 –