Ошибка настройки номера: дополнительный формальный аргумент

У меня есть некоторые файлы Fortran, которые я хотел бы использовать в файлах Python. Я использовал команду C:\Python27\python.exe setup.py build_ext --inplace --fcompiler = g95. Мой файл setup.py содержит следующий код:

import sys, os
extra_link_args = []
extra_link_args = ['-framework', 'accelerate']
from numpy.distutils.core import setup, Extension
opt_flags = ['-g', '-fbounds-check', '-I/usr/include/']
files1 = ['particle_solvers/fbsl_sim_fmod.f90',
          'particle_solvers/fbsl_parts_fmod.f90',
          'particle_solvers/fbsl_poisson_fmod.f90',
          'particle_solvers/fbsl_convol_fmod.f90',
          'particle_solvers/fbsl_lbfr_parts_fmod.f90',
          'particle_solvers/fbsl_ltp_parts_fmod.f90',
          'particle_solvers/fbsl_pusher_fmod.f90',
          ]
ext1 = Extension(name='_fbsl_f90',
                 sources=files1,
                 extra_compile_args=opt_flags,
                 extra_link_args=extra_link_args)
setup(name="_fbsl_f90",
      version='0.1',
      description="Hidden",
      author="Hidden",
      author_email='Hidden',
      url='',
      ext_modules=[ext1])

Но у меня есть следующие ошибки:

g95.exe:f90: build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:211
     &ef2pywrap, smooth_heaviside, r)
                                   1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_smooth_heaviside' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:13
     &nf2pywrap, t)
                 1
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:217
     &nf2pywrap, f_exact_is_known, t)
                 2
Error: Differing types REAL(8) and LOGICAL(4) in formal arguments at (1) and (2)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:223
     &inal_is_knownf2pywrap, f_exact_final_is_known)
                             1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_f_exact_final_is_known'
at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:228
     &2pywrap, f_exact_initial, eta_0, eta_1)
                                       1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_f_exact_initial' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:235
     &, t, eta_0, eta_1)
                  1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_f_exact' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:243
     &rap, f_exact_final, eta_0, eta_1)
                                 1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_f_exact_final' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:250
     &_field_is_givenf2pywrap, velocity_field_is_given)
                               1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_velocity_field_is_given'
 at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:255
     &ine_u0, x0, x1)
                  1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_affine_u0' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:262
     &ine_u1, x0, x1)
                  1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_affine_u1' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:269
     &p, quadratic_u0, t, x0, x1)
                              1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_quadratic_u0' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:277
     &p, quadratic_u1, t, x0, x1)
                              1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_quadratic_u1' at (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:285
     &w_0f2pywrap, bwd_affine_flow_0, t, x0, x1)
                                             1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_bwd_affine_flow_0' at (1
)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:293
     &w_1f2pywrap, bwd_affine_flow_1, t, x0, x1)
                                             1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_bwd_affine_flow_1' at (1
)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:301
     &ic_flow_0f2pywrap, bwd_quadratic_flow_0, t, x0, x1)
                                                      1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_bwd_quadratic_flow_0' at
 (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:309
     &ic_flow_1f2pywrap, bwd_quadratic_flow_1, t, x0, x1)
                                                      1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_bwd_quadratic_flow_1' at
 (1)
In file build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90:317
     &0, x1)
         1
Error: Extra formal argument for 'f2pywrap_fbsl_sim_f90_bggk_a' at (1)
error: Command "C:\Users\QUENTIN\bin\g95.exe -fno-second-underscore -O -Ibuild\s
rc.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\in
clude -IC:\Python27\PC -c -c build\src.win32-2.7\_fbsl_f90-f2pywrappers2.f90 -o
build\temp.win32-2.7\Release\build\src.win32-2.7\_fbsl_f90-f2pywrappers2.o -fmod
=build\temp.win32-2.7\Release\ -Ibuild\temp.win32-2.7\Release\" failed with exit
 status 1

Я не понимаю, почему у меня такие дополнительные формальные ошибки аргументов. Как я могу их исправить? Я работаю над Windows 7 с компилятором Python 2.7 и g95.

EDIT: Хорошо, чтобы упростить, вот пример моего кода Fortran:

module test_f90

implicit none

real *8 :: delta

contains

real*8 function test_f(r)
    real*8, intent(in) :: r
    test_f = 0.5*( 1 + erf(r/delta) )
end function

end module test_f90

Когда я использую команду C:\Python27\python.exe setup.py build_ext --inplace --fcompiler = g95 с этим файлом setup.py:

import sys

extra_link_args = []

from numpy.distutils.core import setup, Extension

opt_flags = ['-g', '-fbounds-check', '-I/usr/include/']


files1 = ['test_fmod.f90',
          ]


ext1 = Extension(name='_test_f90',
                 sources=files1,
                 extra_compile_args=opt_flags,
                 extra_link_args=extra_link_args)


setup(name="_test_f90",
      version='0.1',
      description="test module",
      author="Hidden",
      author_email='Hidden',
      url='',
      ext_modules=[ext1])

У меня есть этот файл Fortran, созданный f2py:

!     -*- f90 -*-
!     This file is autogenerated with f2py (version:2)
!     It contains Fortran 90 wrappers to fortran functions.

      subroutine f2pywrap_test_f90_test_f (test_ff2pywrap, r)
      use test_f90, only : test_f
      real(kind=8) r
      real(kind=8) test_ff2pywrap
      test_ff2pywrap = test_f(r)
      end subroutine f2pywrap_test_f90_test_f

      subroutine f2pyinittest_f90(f2pysetupfunc)
      use test_f90, only : delta
      interface 
      subroutine f2pywrap_test_f90_test_f (test_ff2pywrap, test_f, r)
      real(kind=8) test_f
      real(kind=8) r
      real(kind=8) test_ff2pywrap
      end subroutine f2pywrap_test_f90_test_f
      end interface
      external f2pysetupfunc
      call f2pysetupfunc(delta,f2pywrap_test_f90_test_f)
      end subroutine f2pyinittest_f90

но у меня все еще есть эта ошибка:

g95.exe:f90: build\src.win32-2.7\_test_f90-f2pywrappers2.f90
In file build\src.win32-2.7\_test_f90-f2pywrappers2.f90:15

      subroutine f2pywrap_test_f90_test_f (test_ff2pywrap, test_f, r)
                                                                   1
Error: Extra formal argument for 'f2pywrap_test_f90_test_f' at (1)
error: Command "C:\Users\QUENTIN\bin\g95.exe -fno-second-underscore -O -Ibuild\s
rc.win32-2.7 -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\in
clude -IC:\Python27\PC -c -c build\src.win32-2.7\_test_f90-f2pywrappers2.f90 -o
build\temp.win32-2.7\Release\build\src.win32-2.7\_test_f90-f2pywrappers2.o -fmod
=build\temp.win32-2.7\Release\ -Ibuild\temp.win32-2.7\Release\" failed with exit
 status 1

Ответы

Ответ 1

Извините, похоже, что поддержка оболочки f2py не работает, так как функция дважды с конфликтующими сигнатурами: сначала 2, затем 3 формальных аргумента. Не ясно, что эта версия будет работать для вас так, как вам нужно, хотя вам может пригодиться работа с примерами первых нескольких записей f2py ToC.

Ответ 2

это показывает, что numpy не установлен должным образом. Вы можете скачать NumPy по следующей ссылке

https://pypi.org/project/numpy/

или вы можете использовать колесный файл для установки NumPy.

Перейдите к следующей строке, чтобы загрузить подходящее колесо.
https://www.lfd.uci.edu/~gohlke/pythonlibs/

по вышеуказанной ссылке найдите numpy и установите его

Ответ 3

https://sourceforge.net/projects/numpy/?source=typ_redirect Выше упоминание, ссылка имеет исходный файл NumPy скачать его.

Затем выполните команду в терминале.

cd/home/Downloads/numpy-1.11.2

Ls

sudo python setup.py установить