F2py не выводит данные, как ожидалосьPython

Программы на Python
Ответить
Anonymous
 F2py не выводит данные, как ожидалось

Сообщение Anonymous »

Почему f2py не создает правильную оболочку при работе с входными параметрами?
Вот пример вызова моей функции:

Код: Выделить всё

io = 7.5
io, out1, out2, out3 = fortran_file.func(5, 2.5, False, io)
Вот как это может выглядеть на Фортране (example.f):

Код: Выделить всё

subroutine func(inputA, inputB, inputC, ioD, outE, outF, outG)

integer inputA
real inputB
logical inputC

real ioD, outE, outF, outG
real localH

if(.not.inputC) then
localH= ioD
else
localH= inputB
endif

ioD= ioD + localH
outE= inputA + 10.5
outF= inputA + 5.5
outG= inputA + 1.5
return
end
По умолчанию f2py помечает все здесь как входные данные, хотя это простой пример. Поэтому я создаю подпись файла, используя:

Код: Выделить всё

python.exe -m numpy.f2py -m fortran_file -h sig_example.pyf example.f
Я редактирую файл pyf, добавляя правильную информацию о намерениях. Затем я компилирую, используя:

Код: Выделить всё

python.exe -m numpy.f2py -c sig_example.pyf example.f
Но он продолжает жаловаться, что функция f2py возвращает только 3 элемента.
Даже если io явно использует намерение (inout), f2py не возвращает его.
Я использовал параметр --build-dir в f2py, чтобы просмотреть сгенерированный код C для оболочки.
Списки файлов io в разделе «Параметры», но там написано массив in/output Rank-0(float,'f)
Это говорит мне о том, что он знает, что он должен быть inout, но я не понимаю, почему он помечает его как массив?
Это также не так. list io в разделе «Возвраты», что меня еще больше сбивает с толку.
Связанный вызов Py_BuildValue также не включает io в список аргументов.
Почему кажется? например, inout не должен возвращаться?
В этом весь смысл inout, и для некоторых файлов он необходим.
Я понимаю, что весь этот вопрос нишевый, но я мог бы действительно нужна помощь здесь. Есть ли способ указать намерения параметров внутри Python? Потому что у меня слишком много файлов, чтобы редактировать подписи вручную.

Подробнее здесь: https://stackoverflow.com/questions/779 ... s-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»