title: Compiling a FORTRAN Module using f2py
body: <p>I used to compile a FORTRAN program with f2py long time ago. But when I failed to re-compile it today. I guess the reason is not pointing to the right compiler. Last time, my machine was clean only has gnu installed as the only compiler, while today it has too many compiles from <code>visualstudio2012</code> <code>Parallel Studio XE 2013</code> <code>MinGW32-xy</code> <code>Rtools</code>. In general, I am sure the code is correct. So could anyone give me some suggestions on how the arguments to use f2py? Below is my command:</p>
  
  <pre><code>python C:\Python27\Scripts\f2py.py --fcompiler=gnu95 -c -m geneeb geneec2_edit_unix.for
  
  build_src: building npy-pkg config files
  running build_ext
  No module named msvccompiler in numpy.distutils; trying from distutils
  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 c:\Rtools\gcc-4.6.3\bin\gfortran.exe
  Found executable c:\Rtools\gcc-4.6.3\bin\gfortran.exe
  customize Gnu95FCompiler
  customize Gnu95FCompiler using build_ext
  building 'geneeb' extension
  compiling C sources
  error: Unable to find vcvarsall.bat
  </code></pre>
  
  <p>Later, based on this <a href="https://stackoverflow.com/a/10558328/1231509">post</a> I added VS90COMNTOOLS=%VS110COMNTOOLS% to my user environment, but got the following error. I really appreciate your help!</p>
  
  <pre><code>I:\Dropbox\REST&gt;python C:\Python27\Scripts\f2py.py --fcompiler=gnu95 -c -m geneec geneec2_edit_unix.for
  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 "geneec" sources
  f2py options: []
  f2py:&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneecmodule.c
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7
  Reading fortran codes...
          Reading file 'geneec2_edit_unix.for' (format:fix,strict)
  Post-processing...
          Block: geneec
                          Block: geneec2
  {}
  In: :geneec:geneec2_edit_unix.for:agasae
  vars2fortran: No typespec for argument "nasae".
  {}
  In: :geneec:geneec2_edit_unix.for:agasae
  vars2fortran: No typespec for argument "yloc".
  {}
  In: :geneec:geneec2_edit_unix.for:agasae
  vars2fortran: No typespec for argument "pondep".
                          Block: agasae
  Post-processing (stage 2)...
  Building modules...
          Building module "geneec"...
                  Constructing wrapper function "geneec2"...
                    re1,re2,re3,re4,re5,re6,re7,re8 = geneec2(apprat,appnum,apspac,koc,methaf,wetted,method,airflg,ylocen,grnflg,grsize,orcflg,incorp,sol,methap,hydhap,fothap)
                  Constructing wrapper function "agasae"...
                    agasae(nasae,yloc,pondep)
          Wrote C/API module "geneec" to file "c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneecmodule.c"
    adding 'c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\fortranobject.c' to sources.
    adding 'c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7' to include_dirs.
  copying C:\Python27\lib\site-packages\numpy\f2py\src\fortranobject.c -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7
  copying C:\Python27\lib\site-packages\numpy\f2py\src\fortranobject.h -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7
  build_src: building npy-pkg config files
  running build_ext
  No module named msvccompiler in numpy.distutils; trying from distutils
  customize MSVCCompiler
  customize MSVCCompiler using build_ext
  customize Gnu95FCompiler
  Found executable c:\Rtools\gcc-4.6.3\bin\gfortran.exe
  Found executable c:\Rtools\gcc-4.6.3\bin\gfortran.exe
  customize Gnu95FCompiler using build_ext
  building 'geneec' extension
  compiling C sources
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m
  creating c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ic:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7 -IC:\Python27\lib\site-pack
  es\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tcc:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneecmodule.c /Foc:\users\tao\appdata\local\temp\tmpfjjb_m\Release\
  ers\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneecmodule.obj
  Found executable C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.exe
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ic:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7 -IC:\Python27\lib\site-pack
  es\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tcc:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\fortranobject.c /Foc:\users\tao\appdata\local\temp\tmpfjjb_m\Release
  sers\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\fortranobject.obj
  compiling Fortran sources
  Fortran f77 compiler: c:\Rtools\gcc-4.6.3\bin\gfortran.exe -Wall -ffixed-form -fno-second-underscore -O3 -funroll-loops
  Fortran f90 compiler: c:\Rtools\gcc-4.6.3\bin\gfortran.exe -Wall -fno-second-underscore -O3 -funroll-loops
  Fortran fix compiler: c:\Rtools\gcc-4.6.3\bin\gfortran.exe -Wall -ffixed-form -fno-second-underscore -Wall -fno-second-underscore -O3 -funroll-loops
  compile options: '-Ic:\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC -c'
  gfortran.exe:f77: geneec2_edit_unix.for
  copying c:\rtools\gcc-4.6.3\lib\libgfortran.a -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\gfortran.lib
  copying c:\rtools\gcc-4.6.3\lib\gcc\i686-w64-mingw32\4.6.3\libgcc.a -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\gcc.lib
  copying c:\rtools\gcc-4.6.3\i686-w64-mingw32\lib\libmingw32.a -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\mingw32.lib
  copying c:\rtools\gcc-4.6.3\i686-w64-mingw32\lib\libmingwex.a -&gt; c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\mingwex.lib
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:c:\rtools\gcc-4.6.3\lib /LIBPATH:c:\rtools\gcc-4.6.3\lib\gcc\i686-w64-mingw32\4.6.
  /LIBPATH:c:\rtools\gcc-4.6.3\i686-w64-mingw32\lib /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild /LIBPATH:c:\users\tao\appdata\local\temp\tmpfjjb_m\Release /LIBPATH:C:\Python27\lib
  /LIBPATH:C:\Python27\PCbuild gfortran.lib gcc.lib mingw32.lib mingwex.lib /EXPORT:initgeneec c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.wi
  2-2.7\geneecmodule.obj c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\fortranobject.obj c:\users\tao\appdata\local\temp\tmpfjjb_m\Re
  ase\geneec2_edit_unix.o /OUT:.\geneec.pyd /IMPLIB:c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneec.lib /MANIFESTFILE:c:\users\t
  \appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneec.pyd.manifest
  Found executable C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\link.exe
  mt.exe -nologo -manifest c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneec.pyd.manifest -outputresource:.\geneec.pyd;2
  Found executable C:\Program Files (x86)\Windows Kits\8.0\bin\x86\mt.exe
  
  c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneec.pyd.manifest : general error c1010070: Failed to load and parse the manifest.
  e system cannot find the file specified.
  error: Command "mt.exe -nologo -manifest c:\users\tao\appdata\local\temp\tmpfjjb_m\Release\users\tao\appdata\local\temp\tmpfjjb_m\src.win32-2.7\geneec.pyd.manifest -outputresource:.\geneec
  yd;2" failed with exit status 31
  </code></pre>
  
  <h1>Update:</h1>
  
  <p>The second method of compiling worked, although the compiling process generated errors. I am not sure can I always ignore these errors? </p>