2016-01-18 135 views
0

我想学习如何编译使用f2py的python fortran代码。我使用Python 2.7.10(通过Python(x,y))和Mingw32作为我的编译器。我试图让它在64位Windows 7中运行,但Python 2.7.10运行在32位。我为我的系统的PATH文件添加了C:\MingW\bin\C:\Python27\的适当路径。f2py与你好世界

当我试图编译一个简单的hello.f“Hello,World!”程序,我得到以下错误:

C:\Users\Tim\Desktop>f2py -c -m hello hello.f 
running build 
running config_cc 
unifing config_cc, config, build_clib, build_ext, build commands --compiler options 
running config_fc 
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options 
running build_src 
build_src 
building extension "hello" sources 
f2py options: [] 
f2py:> c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.c 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 
Reading fortran codes... 
    Reading file 'hello.f' (format:fix,strict) 
Post-processing... 
    Block: hello 
      Block: hello 
Post-processing (stage 2)... 
Building modules... 
    Building module "hello"... 
    Wrote C/API module "hello" to file "c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.c" 
    adding 'c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\fortranobject.c' to sources. 
    adding 'c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7' to include_dirs. 
copying C:\Python27\lib\site-packages\numpy\f2py\src\fortranobject.c -> c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 
copying C:\Python27\lib\site-packages\numpy\f2py\src\fortranobject.h -> c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 
build_src: building npy-pkg config files 
running build_ext 
Cannot build msvcr library: "msvcr90d.dll" not found 
customize Mingw32CCompiler 
customize Mingw32CCompiler 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 C:\MinGW\bin\gfortran.exe 
Found executable C:\MinGW\bin\gfortran.exe 
customize Gnu95FCompiler 
customize Gnu95FCompiler using build_ext 
building 'hello' extension 
compiling C sources 
C compiler: gcc -O2 -Wall -Wstrict-prototypes 

creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr 
creating c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 
compile options: '-DNPY_MINGW_USE_CUSTOM_MSVCR -D__MSVCRT_VERSION__=0x0900 -Ic:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c' 
gcc -O2 -Wall -Wstrict-prototypes -DNPY_MINGW_USE_CUSTOM_MSVCR -D__MSVCRT_VERSION__=0x0900 -Ic:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.c -o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.o 
Found executable C:\MinGW\bin\gcc.exe 
gcc -O2 -Wall -Wstrict-prototypes -DNPY_MINGW_USE_CUSTOM_MSVCR -D__MSVCRT_VERSION__=0x0900 -Ic:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\fortranobject.c -o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\fortranobject.o 
compiling Fortran sources 
Fortran f77 compiler: C:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -O3 -funroll-loops 
Fortran f90 compiler: C:\MinGW\bin\gfortran.exe -Wall -g -fno-second-underscore -O3 -funroll-loops 
Fortran fix compiler: C:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -O3 -funroll-loops 
compile options: '-Ic:\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c' 
gfortran.exe:f77: hello.f 
C:\MinGW\bin\gfortran.exe -Wall -g -Wall -g -shared c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\fortranobject.o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\hello.o -Lc:\mingw\lib\gcc\mingw32\4.8.1 -LC:\Python27\libs -LC:\Python27\PCbuild -lpython27 -lgfortran -o .\hello.pyd 
C:\Python27\libs/libpython27.a: error adding symbols: File format not recognized 
collect2.exe: error: ld returned 1 exit status 
error: Command "C:\MinGW\bin\gfortran.exe -Wall -g -Wall -g -shared c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\hellomodule.o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\users\tim~1.rue\appdata\local\temp\tmpriisfr\src.win32-2.7\fortranobject.o c:\users\tim~1.rue\appdata\local\temp\tmpriisfr\Release\hello.o -Lc:\mingw\lib\gcc\mingw32\4.8.1 -LC:\Python27\libs -LC:\Python27\PCbuild -lpython27 -lgfortran -o .\hello.pyd" failed with exit status 1 

有人可以帮我理清为什么这不是编译和帮助我得到这个工作?

+0

看到这个问题:http://stackoverflow.com/questions/33984023/python-embedded-c-code-compilation-error –

回答

1

其实这似乎是a bug in Python 2.7.10,其中包含64位对象的32位libpython27.a。要解决它,要么将python降级到2.7.9,要么将其升级到2.7.11(或者你可以按照this问题的路线,但根据你的经验,这可能会很痛苦)。