F2PY no puede encontrar el comstackdor de Intel Fortran en Windows 7

Estoy luchando para que F2PY trabaje con Intel Fortran en Windows 7. Este parece ser un problema común y he intentado varias sugerencias encontradas en otras publicaciones (que se describen a continuación).

Un poco de información sobre mi sistema:

  • Windows 7 de 64 bits
  • Python 2.7.11 a través de Enthought Canopy de 32 bits (actualizado al 12 de junio de 2016)
  • Intel Fortran 14 (Intel \ Composer XE 2013 SP1) (32 y 64 bits)

Después de investigar un poco, vea que encontré que el problema puede estar relacionado con el tiempo de ejecución de c ++, así que instalé Microsoft Visual C ++ para Python.

Aún así, cuando bash crear un caso de prueba simple, recibo el siguiente error:

D:\python stuff\enthought_ course\demo\f2py_fcopy>f2py -c --fcompiler=intelv --c ompiler=msvc -m fcopy fcopy.f running build running config_cc unifing config_cc, config, build_clib, build_ext, build commands --compiler opti ons running config_fc unifing config_fc, config, build_clib, build_ext, build commands --fcompiler opt ions running build_src build_src building extension "fcopy" sources f2py options: [] f2py:> c:\users\mshippen\appdata\local\temp\tmpthkqug\src.win32-2.7\fcopymodule. c creating c:\users\mshippen\appdata\local\temp\tmpthkqug\src.win32-2.7 Reading fortran codes... Reading file 'fcopy.f' (format:fix,strict) Post-processing... Block: fcopy Block: fcopy Post-processing (stage 2)... Building modules... Building module "fcopy"... Constructing wrapper function "fcopy"... getarrdims:warning: assumed shape array, using 0 instead of '*' getarrdims:warning: assumed shape array, using 0 instead of '*' fcopy(ain,n,aout) Wrote C/API module "fcopy" to file "c:\users\mshippen\appdata\local\temp \tmpthkqug\src.win32-2.7\fcopymodule.c" adding 'c:\users\mshippen\appdata\local\temp\tmpthkqug\src.win32-2.7\fortranob ject.c' to sources. adding 'c:\users\mshippen\appdata\local\temp\tmpthkqug\src.win32-2.7' to inclu de_dirs. copying C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\f2py\src\fortranobject.c -> c:\users\mshippen\appdata\local\temp\tmpthkq ug\src.win32-2.7 copying C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\f2py\src\fortranobject.h -> c:\users\mshippen\appdata\local\temp\tmpthkq ug\src.win32-2.7 build_src: building npy-pkg config files running build_ext customize MSVCCompiler customize MSVCCompiler using build_ext customize IntelVisualFCompiler Could not locate executable ifort Could not locate executable ifl Traceback (most recent call last): File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\Scripts\f2py-scr ipt.py", line 28, in  main() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\f2py\f2py2e.py", line 648, in main run_compile() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\f2py\f2py2e.py", line 633, in run_compile setup(ext_modules=[ext]) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\distutils\core.py", line 169, in setup return old_setup(**new_attr) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\core.py", line 151, in setup dist.run_commands() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\dist.py", line 953, in run_commands self.run_command(cmd) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\dist.py", line 972, in run_command cmd_obj.run() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\distutils\command\build.py", line 47, in run old_build.run(self) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\command\build.py", line 127, in run self.run_command(cmd_name) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\cmd.py", line 326, in run_command self.distribution.run_command(command) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\App\appdata\canopy-1. 7.1.3323.win-x86\lib\distutils\dist.py", line 972, in run_command cmd_obj.run() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\distutils\command\build_ext.py", line 222, in run fcompiler.customize(self.distribution) File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\distutils\fcompiler\__init__.py", line 464, in customize self.find_executables() File "C:\Users\mshippen\AppData\Local\Enthought\Canopy32\User\lib\site-package s\numpy\distutils\fcompiler\__init__.py", line 354, in find_executables raise CompilerNotFound('%s: f90 nor f77' % ctype) numpy.distutils.fcompiler.CompilerNotFound: intelv: f90 nor f77 D:\python stuff\enthought_ course\demo\f2py_fcopy> 

Aquí hay una salida de la verificación del comstackdor f2py:

 D:\python stuff\enthought_ course\demo\f2py_fcopy>ff2py -c --help-fcompiler Fortran compilers found: Compilers available for this platform, but not found: --fcompiler=absoft Absoft Corp Fortran Compiler --fcompiler=compaqv DIGITAL or Compaq Visual Fortran Compiler --fcompiler=g95 G95 Fortran Compiler --fcompiler=gnu GNU Fortran 77 compiler --fcompiler=gnu95 GNU Fortran 95 compiler --fcompiler=intelem Intel Fortran Compiler for 64-bit apps --fcompiler=intelev Intel Visual Fortran Compiler for Itanium apps --fcompiler=intelv Intel Visual Fortran Compiler for 32-bit apps --fcompiler=intelvem Intel Visual Fortran Compiler for 64-bit apps Compilers not available on this platform: --fcompiler=compaq Compaq Fortran Compiler --fcompiler=hpux HP Fortran 90 Compiler --fcompiler=ibm IBM XL Fortran Compiler --fcompiler=intel Intel Fortran Compiler for 32-bit apps --fcompiler=intele Intel Fortran Compiler for Itanium apps --fcompiler=lahey Lahey/Fujitsu Fortran 95 Compiler --fcompiler=mips MIPSpro Fortran Compiler --fcompiler=nag NAGWare Fortran 95 Compiler --fcompiler=none Fake Fortran compiler --fcompiler=pathf95 PathScale Fortran Compiler --fcompiler=pg Portland Group Fortran Compiler --fcompiler=sun Sun or Forte Fortran 95 Compiler --fcompiler=vast Pacific-Sierra Research Fortran 90 Compiler For compiler details, run 'config_fc --verbose' setup command. Removing build directory c:\users\mshippen\appdata\local\temp\tmpiopwe2 

Y aquí están algunas variables relevantes del sistema:

 IFORT=C:\Program Files (x86)\Intel\Composer XE 2013 SP1\ IFORT_COMPILER14=C:\Program Files (x86)\Intel\Composer XE 2013 SP1\ INTEL_DEV_REDIST=C:\Program Files (x86)\Common Files\Intel\Shared Libraries\ INTEL_LICENSE_FILE=C:\Program Files (x86)\Common Files\Intel\Licenses Path=C:\Users\mshippen\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\WinSDK\Bin; C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\; etc … 

Algunas cosas que he intentado:

  • Corrió ifortvars.bat como se sugiere aquí y aquí
  • Probé varias opciones –fcompiler = intelv, intelvem, intel, intelem (aunque intelv debería ser la correcta)
  • Se agregó la variable de sistema [IFORT] anterior como un duplicado de [IFORT_COMPILER14] en caso de que F2PY tropezara con la clave específica de la versión
  • Intenté extender estas rutas un nivel inferior a: C: \ Archivos de progtwig (x86) \ Intel \ Composer XE 2013 SP1 \ bin \ ia32 (no funcionó, por lo tanto, se revertió)

Sin embargo, me sale el mismo resultado. Estoy desconcertado de que, a pesar de mi configuración de variable de ruta y entorno, no se puede encontrar el ifort.exe. ¡Cualquier idea u orientación sería muy apreciada!

Gracias, Mack

Después de algunos experimentos adicionales, pude resolver el problema y publicar los pasos que funcionaron en caso de que pueda ayudar a otros con problemas similares.

  1. f2py ahora puede encontrar Intel Fortran después de configurar la ruta en C: \ Archivos de progtwig (x86) \ Intel \ Composer XE 2013 SP1 \ bin \ ia32 y reiniciar
  2. Sin embargo, después de esto, recibí un error que decía: “error al no encontrar vcvarsall.bat”. Este es el archivo por lotes con los ajustes de configuración para el tiempo de ejecución de Microsoft c ++ para Python 2.7 mencionado anteriormente. Como obtuve de otras publicaciones, este es un error en Python 2.7.11 que pude corregir al editar el archivo msvc9compiler.py en la carpeta principal (no numpy) de distutils. Específicamente, codifiqué la ruta a este archivo como tal en la línea 267:

     def query_vcvarsall(version, arch="x86"): """Launch vcvarsall.bat and read the settings from its environment """ vcvarsall = find_vcvarsall(version) vcvarsall = "C:/Users/mshippen/AppData/Local/Programs/Common/Microsoft/Visual C++ for Python/9.0/vcvarsall.bat" interesting = set(("include", "lib", "libpath", "path")) result = {}