最近、プログラミングとコンパイルの仕組みに関する絶対的なスタックを学んできましたが、これはちょっとです私の深さの。現在、私はpyigrf12をインストールしようとしていますので、PythonでIGRFを使用する方法があります(私は自分の仕事のほとんどを行っています)。私の最初の問題は、このモデルがFortranで開発されたため、適切なコンパイラを見つけることでした。 MinGWを使ってg77とgfortranの両方をインストールしました。FortranでのPythonモジュール:LNK1112 `モジュールマシンタイプ 'X86'は、ターゲットマシンタイプ 'x64'と衝突します。
各コンパイラは私に異なるエラーを与えます。 setup.pyがg77を使用するようにデフォルト設定されていると、処理中に "Invalid form for assignment ..."エラーが原因で「exit status 1で失敗しました」というエラーが表示されます。だから、setup.pyがgfortran.exeを使用するようにg77.exeバイナリの名前を変更しました(どのコンパイラを使うかはわかりませんが、これはすべてのコマンドラインです)。
このコンパイラはプロセスをさらに終了しましたが、最終的には "failed with exit status 1112"で終了しました。出力を見ると、コンパイラは "致命的なエラーLNK1112:ターゲットマシンタイプ 'x64'と競合するモジュールマシンタイプ 'X86'を見つけたようです。"このエラーを調べると、私はこの問題を参照していくつかのフォーラムに出くわしました。 proposed solution in each caseは私がVisual Studio環境を使用していると思われ、「/ MACHINE:IX86」フラグを変更するためにクリックすることができます。
これは簡単だと思われますが、これはコマンドラインで実行できますか?もしそうなら、どうですか?現在、私がsetup.pyスクリプトを実行するために行うのは、コマンドプロンプト(Windowsマシン上にあります)に
python setup.py develop
です。どんな助けでも大歓迎です!
編集:私が書いたものの全出力は以下の通りです。私は何も変更していないことに注意してください。これまで私がコントロールしてきた唯一のものはコンパイラです。それ以外のものはすべてpyigrfの一部です。このモジュールをコンパイルする際に問題があるように見えるのは間違いありませんが、周りに何か問題がないかどうか疑問に思っていました。それはある種の旗のように思えるので...私は確信していません。正直なところ、ある種の奇跡を望んでいる。ここにあります:
running develop
running build_scripts
running egg_info
running build_src
build_src
building extension "igrf12" sources
f2py options: ['--quiet']
adding 'build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.c' to sources.
adding 'build\src.win-amd64-2.7\build\src.win-amd64-2.7' to include_dirs.
build_src: building npy-pkg config files
writing requirements to pyigrf12.egg-info\requires.txt
writing pyigrf12.egg-info\PKG-INFO
writing top-level names to pyigrf12.egg-info\top_level.txt
writing dependency_links to pyigrf12.egg-info\dependency_links.txt
reading manifest file 'pyigrf12.egg-info\SOURCES.txt'
writing manifest file 'pyigrf12.egg-info\SOURCES.txt'
running build_ext
customize MSVCCompiler
customize MSVCCompiler using build_ext
customize GnuFCompiler
Could not locate executable g77
Could not locate executable f77
customize IntelVisualFCompiler
Could not locate executable ifort
Could not locate executable ifl
customize AbsoftFCompiler
Could not locate executable f90
customize CompaqVisualFCompiler
Could not locate executable DF
customize IntelItaniumVisualFCompiler
Could not locate executable efl
customize Gnu95FCompiler
Found executable D:\MinGW\bin\gfortran.exe
customize Gnu95FCompiler
customize Gnu95FCompiler using build_ext
building 'igrf12' extension
compiling C sources
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC /Tcbuild\src.win-amd64-2.7\igrf12module.c /Fobuild\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12module.obj
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC /Tcbuild\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.c /Fobuild\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.obj
compiling Fortran sources
Fortran f77 compiler: D:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -O0
Fortran f90 compiler: D:\MinGW\bin\gfortran.exe -Wall -g -fno-second-underscore -O0
Fortran fix compiler: D:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -O0
compile options: '-Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -c'
gfortran.exe:f77: fortran/igrf12.f
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:d:\mingw\lib\gcc\mingw32\6.3.0 /LIBPATH:d:\mingw\lib /LIBPATH:C:\ProgramData\Anaconda2\libs /LIBPATH:C:\ProgramData\Anaconda2\PCbuild\amd64 /LIBPATH:C:\ProgramData\Anaconda2\PC\VS9.0\amd64 /LIBPATH:C:\ProgramData\Anaconda2\libs /LIBPATH:C:\ProgramData\Anaconda2\PCbuild\amd64 /LIBPATH:C:\ProgramData\Anaconda2\PC\VS9.0\amd64 /EXPORT:initigrf12 build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12module.obj build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.obj build\temp.win-amd64-2.7\Release\fortran\igrf12.o /OUT:igrf12.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12.pyd.manifest
build\temp.win-amd64-2.7\Release\fortran\igrf12.o : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
g77を忘れました。プロセスを妨げないことを確認してください。 **完全に廃止されました。エラーメッセージからは、そのコードには不十分であることは明らかです。 –
コードの一部の1つは32ビットでコンパイルされ、もう1つの部分は64ビットでコンパイルされます。あなたは両方を一つにする必要があります。大規模なデータセットを扱う場合は、64ビットを推奨します。選択したビット数だけでなく、より多くの出力を見ることが有益です。フラグは異なっていることに注意してください.gfortranはVisual C++フラグを受け入れません。 –
出力全体を含むように編集されました。 – Yoshi