최근에 프로그래밍 및 컴파일 작업에 대한 절대적인 스택을 배웠습니다. 내 깊이. 현재, 나는 파이썬에서 IGRF를 사용하는 몇 가지 방법을 갖기 위해 pyigrf12을 설치하려고하고있다. 내 첫 번째 문제는이 모델이 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 바이너리의 이름을 변경했습니다 (사용하는 컴파일러를 지정하는 방법이 확실하지 않습니다. 모든 명령 행입니다).
이 컴파일러는 프로세스를 더 진행했지만 결국 "종료 상태 1112 실패"로 종료됩니다. 결과를 살펴보면 컴파일러에서 "치명적인 오류 LNK1112 : 모듈 시스템 유형 'X86'이 (가) 대상 시스템 유형 'x64'와 (와) 충돌합니다. 이 오류를 살펴보면서이 문제와 관련하여 여러 포럼을 방문했습니다. proposed solution in each case은 Visual Studio 환경을 사용하고 있다고 가정하는 것처럼 보였고 '/ MACHINE : IX86'플래그를 변경하기 위해 클릭 할 수있었습니다.
이것은 간단 해 보이지만 명령 줄에서 수행 할 수 있습니까? 그렇다면 어떻게? 현재 setup.py 스크립트를 실행하기 위해 명령 프롬프트 (Windows 컴퓨터)에있는
python setup.py develop
입니다. 어떤 도움이라도 대단히 감사하겠습니다!
편집 : 내가 작성한 전체 출력은 다음과 같습니다. 아무 것도 변경하지 않았 음을 유의하십시오. 지금까지 컴파일러 만 제어 할 수있었습니다. 다른 모든 것은 피그 르프의 일부입니다. 이 모듈을 컴파일 할 때 문제가 될 수있는 것처럼 보이지만 주변에 문제가 있는지 궁금합니다. 그것이 어떤 종류의 깃발 인 것처럼 보이기 때문에 ... 나는 확실하지 않다. 정직하게 일종의 기적을 기대합니다. 여기에 있습니다 :
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을 잊어 버리십시오. 프로세스를 방해하지 않는지 확인하십시오. 그것은 ** 완전히 ** 폐기되었으며 오류 메시지에서 해당 코드에 대해 부적절하다는 것이 분명합니다. –
코드 부분 중 하나는 32 비트로 컴파일되고 다른 부분은 64 비트로 컴파일됩니다. 두 가지 유형을 모두 만들어야합니다. 대용량 데이터 세트를 사용하려는 경우 64 비트를 선호합니다. 당신이 선택한 몇 비트가 아니라 출력의 더 많은 부분을 보는 것이 유익 할 것입니다. 플래그가 다르면 gfortran이 Visual C++ 플래그를 허용하지 않습니다. –
전체 출력을 포함하도록 편집되었습니다. – Yoshi