2016-06-12 3 views
0

Я изо всех сил пытаюсь получить F2PY, работающий с Intel Fortran в Windows 7. Это, как представляется, является общей проблемой, и я попытался найти ряд предложений, найденных в других сообщениях (описанных ниже).F2PY не может найти компилятор intel fortran на окнах 7

Немного информации о моей системе:

  • ОС Windows 7 64-бит
  • Python 2.7.11 через Enthought Canopy 32-бит (до даты по состоянию на 12 июня, 2016)
  • Intel Fortran 14 (Intel \ Composer XE 2013 SP1) (32 и 64-бит)

После этого несколько исследований see here я обнаружил, что проблема может быть связана с выполнения C++, так что я установил M icrosoft Visual C++ для Python.

Тем не менее, когда я пытаюсь построить простой тестовый пример, я получаю следующее сообщение об ошибке:

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 <module> 
    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> 

Вот выход проверки 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 

А вот некоторые соответствующие системные переменные:

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 … 

Некоторые вещи я пытался:

  • Ран ifortvars.bat как предложено here и here
  • Пробовал различные --fcompiler = intelv, intelvem, Интел, intelem варианты (даже если intelv должен быть правильным)
  • Добавлен [IFORT ] переменная система выше как дубликат [IFORT_COMPILER14] в случае F2PY наткнулись на версию конкретного ключа
  • Пробовал простирающийся эти пути вниз уровня в C: \ Program Files (x86) \ Intel \ Composer XE 2013 SP1 \ bin \ ia32 (не работал, поэтому вернулся назад)

Однако, я получаю тот же результат. Я озадачен тем, что, несмотря на настройки параметров пути и среды, файл ifort.exe не найден. Любые идеи или рекомендации будут высоко оценены!

Спасибо, Mack

+0

После некоторых дальнейших экспериментов, f2py теперь можно найти Intel Fortran после установки путь к C: \ Program Files (x86) \ Intel \ Composer XE 2013 SP1 \ bin \ ia32 и перезагрузка. –

+0

Не стесняйтесь, пожалуйста, включите это в качестве ответа и отметьте его как таковое (после необходимой задержки), чтобы он не отображался как неотвеченный вопрос. –

+0

Спасибо Джонатан ... Я не ожидал, что первый ответ на stackoverflow, который я представил, будет по моему собственному вопросу! :) –

ответ

1

После некоторых дальнейших экспериментов, я был в состоянии решить эту проблему, и я размещая шаги, которые работали в случае это может помочь другим с подобными проблемами. Теперь

  1. f2py можно найти Intel Fortran после установки путь к C: \ Program Files (x86) \ Intel \ Composer XE 2013 SP1 \ Bin \ ia32 и перезагрузки
  2. Однако, после этого, я получил ошибка: «ошибка не найдена vcvarsall.bat». Это командный файл с настройками конфигурации для Microsoft C++ для среды исполнения Python 2.7, упомянутой выше. Как я понял из других сообщений, это ошибка в Python 2.7.11, которую я смог исправить, отредактировав файл msvc9compiler.py в основной (не numpy) папке distutils.В частности, я жёстко путь к этому файлу как, например, в строке 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 = {} 
    
+1

еще одна вещь для добавления, я также получил следующую ошибку: фатальная ошибка LNK1104: невозможно открыть файл «ifconsol.lib», несмотря на то, что он определил местоположение файла в переменной LIBPATH. Поэтому мне пришлось построить этот путь в моей командной строке f2py - например: f2py -m fcopy fcopy.f -c -L "C: \ Program Files (x86) \ Intel \ Composer XE 2013 SP1 \ compiler \ lib \ ia32" –

Смежные вопросы