Spec-Zone.ru › NumPy 1.18

Использование F2PY

F2PY может использоваться как утилита командной строки f2py или как модуль Python numpy.f2py. Хотя мы стараемся установить утилиту командной строки как часть установки NumPy, некоторые платформы, такие как Windows, затрудняют надежную установку исполняемого файла в PATH. В этом документе мы будем ссылаться на f2py, но вам может потребоваться запустить её как модуль.

` python -m numpy.f2py `

Если вы запустите f2py без аргументов, и строка numpy Version в конце совпадает с версией NumPy, напечатанной из python -m numpy.f2py, то вы можете использовать более короткую версию. В противном случае, или если вы не можете запустить f2py, вы должны заменить все вызовы f2py здесь на более длинную версию.

Команда f2py

При использовании как утилиту командной строки, f2py имеет три основных режима, определяемых использованием -c и -h переключателей:

  1. Для сканирования исходных файлов Fortran и генерации файла сигнатур используйте

    f2py -h <filename.pyf> <options> <fortran files>   \
      [[ only: <fortran functions>  : ]                \
       [ skip: <fortran functions>  : ]]...            \
      [<fortran files> ...]
    

    Обратите внимание, что файл исходного кода Fortran может содержать множество процедур, и не обязательно все процедуры требуются для использования из Python. Поэтому вы можете либо указать, какие процедуры должны быть обернуты (в части only: .. : ), или какие процедуры F2PY должен игнорировать (в части skip: .. : ).

    Если <filename.pyf> указано как stdout, то сигнатуры отправляются в стандартный вывод вместо файла.

    Среди других опций (см. ниже), в этом режиме можно использовать следующие опции:

    --overwrite-signature

    Перезаписать существующий файл сигнатур.

  2. Для построения модуля расширения используйте

    f2py <options> <fortran files>          \
      [[ only: <fortran functions>  : ]     \
       [ skip: <fortran functions>  : ]]... \
      [<fortran files> ...]
    

    Построенный модуль расширения сохраняется как <modulename>module.c в текущем каталоге.

    Здесь <fortran files> также может содержать файлы сигнатур. Среди других опций (см. ниже), в этом режиме можно использовать следующие опции:

    --debug-capi

    Добавить отладочные крючки в модуль расширения. При использовании этого модуля расширения в стандартный вывод выводится различная информация об обёртке, например, значения переменных, выполняемые шаги и т. д.

    -include'<includefile>'

    Добавить оператор CPP #include в исходный код модуля расширения. <includefile> должно быть задано в одном из следующих форматов:

    "filename.ext"
    <filename.ext>
    

    Оператор include вставляется непосредственно перед функциями обёртки. Эта функция позволяет использовать произвольные C-функции (определённые в <includefile>) в сгенерированных F2PY обёртках.

    Эта опция устарела. Используйте оператор usercode для прямого указания фрагментов кода C в файлах сигнатур

    --[no-]wrap-functions

    Создать обёртки для подпрограмм Fortran в Fortran функции. --wrap-functions является значением по умолчанию, поскольку оно обеспечивает максимальную переносимость и независимость от компилятора.

    --include-paths <path1>:<path2>:..

    Искать файлы include из заданных каталогов.

    --help-link [<list of resources names>]

    Список системных ресурсов, найденных numpy_distutils/system_info.py. Например, попробуйте f2py --help-link lapack_opt.

  3. Для сборки модуля расширения используйте

    f2py -c <options> <fortran files>       \
      [[ only: <fortran functions>  : ]     \
       [ skip: <fortran functions>  : ]]... \
      [ <fortran/c source files> ] [ <.o, .a, .so files> ]
    

    Если <fortran files> содержит файл сигнатур, то генерируется исходный код для модуля расширения, все исходные коды Fortran и C компилируются, а затем все файлы объектов и библиотек связываются в модуль расширения <modulename>.so, который сохраняется в текущем каталоге.

    Если <fortran files> не содержит файл сигнатур, то модуль расширения строится путём сканирования всех исходных файлов Fortran для поиска сигнатур процедур.

    Среди других опций (см. ниже) и опций, описанных в предыдущем режиме, в этом режиме можно использовать следующие опции:

    --help-fcompiler

    Список доступных компиляторов Fortran.

    --help-compiler [depreciated]

    Список доступных компиляторов Fortran.

    --fcompiler=<Vendor>

    Указать тип компилятора Fortran по поставщику.

    --f77exec=<path>

    Указать путь к компилятору F77

    --fcompiler-exec=<path> [depreciated]

    Указать путь к компилятору F77

    --f90exec=<path>

    Указать путь к компилятору F90

    --f90compiler-exec=<path> [depreciated]

    Указать путь к компилятору F90

    --f77flags=<string>

    Указать флаги компилятора F77

    --f90flags=<string>

    Указать флаги компилятора F90

    --opt=<string>

    Указать флаги оптимизации

    --arch=<string>

    Указать архитектурно-специфические флаги оптимизации

    --noopt

    Компилировать без оптимизации

    --noarch

    Компилировать без архитектурно-зависимой оптимизации

    --debug

    Компилировать с информацией об отладке

    -l<libname>

    Использовать библиотеку <libname> при компоновке.

    -D<macro>[=<defn=1>]

    Определить макрос <macro> как <defn>.

    -U<macro>

    Определить макрос <macro>

    -I<dir>

    Добавить каталог <dir> в список каталогов, просматриваемых при поиске файлов include.

    -L<dir>

    Добавить каталог <dir> в список каталогов для поиска -l.

    link-<resource>

    Связать модуль расширения с <resource>, как определено numpy_distutils/system_info.py. Например, для связывания с оптимизированными библиотеками LAPACK (vecLib на MacOSX, ATLAS в других случаях), используйте --link-lapack_opt. См. также переключатель --help-link.

    При построении модуля расширения может потребоваться комбинация следующих макросов для компиляторов Fortran, отличных от gcc:

    -DPREPEND_FORTRAN
    -DNO_APPEND_FORTRAN
    -DUPPERCASE_FORTRAN
    

    Для тестирования производительности интерфейсов, сгенерированных F2PY, используйте -DF2PY_REPORT_ATEXIT. Затем при выходе из Python будет напечатан отчёт о различных временных замерах. Эта функция может не работать на всех платформах, в настоящее время поддерживается только платформа Linux.

    Для проверки, выполняет ли F2PY сгенерированный интерфейс копирование аргументов массива, используйте -DF2PY_REPORT_ON_ARRAY_COPY=<int>. Когда размер аргумента массива больше <int>, сообщение о копировании отправляется в stderr.

Другие опции:

-m <modulename>

Имя модуля расширения. По умолчанию untitled. Не используйте эту опцию, если используется файл сигнатур (*.pyf).

--[no-]lower

Опускать [не опускать] регистр в <fortran files>. По умолчанию --lower предполагается с переключателем -h, и --no-lower без переключателя -h.

--build-dir <dirname>

Все сгенерированные файлы F2PY создаются в <dirname>. По умолчанию tempfile.mkdtemp().

--quiet

Выполнять тихо.

--verbose

Выполнять с дополнительной детализацией.

-v

Вывести идентификатор версии f2py и завершить выполнение.

Запустите f2py без каких-либо опций, чтобы получить обновлённый список доступных опций.

Модуль Python numpy.f2py

Предупреждение

Текущий интерфейс Python к модулю f2py не является зрелым и может быть изменён в будущем.

Генератор интерфейсов Fortran в Python.

numpy.f2py.run_main(comline_list) [source]

Эквивалентно выполнению:

f2py <args>

где <args>=string.join(<list>,' '), но в Python. Если не используется -h, эта функция возвращает словарь, содержащий информацию о сгенерированных модулях и их зависимостях от исходных файлов. Например, команда f2py -m scalar scalar.f может быть выполнена из Python следующим образом

Вы не можете построить модули расширения с помощью этой функции, то есть использование -c запрещено. Используйте вместо этого команду compile

Примеры

>>> import numpy.f2py
>>> r = numpy.f2py.run_main(['-m','scalar','doc/source/f2py/scalar.f'])
Reading fortran codes...
        Reading file 'doc/source/f2py/scalar.f' (format:fix,strict)
Post-processing...
        Block: scalar
                        Block: FOO
Building modules...
        Building module "scalar"...
        Wrote C/API module "scalar" to file "./scalarmodule.c"
>>> print(r)
{'scalar': {'h': ['/home/users/pearu/src_cvs/f2py/src/fortranobject.h'],
         'csrc': ['./scalarmodule.c', 
                  '/home/users/pearu/src_cvs/f2py/src/fortranobject.c']}}
numpy.f2py.compile(source, modulename='untitled', extra_args='', verbose=True, source_fn=None, extension='.f') [source]

Сборка модуля расширения из исходного кода Fortran 77 с помощью f2py.

Параметры
sourcestr or bytes

Исходный код Fortran модуля/подпрограммы для компиляции

Изменено в версии 1.16.0: Принимает str и bytes

modulenamestr, optional

Имя скомпилированного модуля Python

extra_argsstr or list, optional

Дополнительные параметры, передаваемые f2py

Изменено в версии 1.16.0: Также может быть передан список аргументов.

verbosebool, optional

Вывести вывод f2py на экран

source_fnstr, optional

Имя файла, в который записывается исходный код Fortran. По умолчанию используется временный файл с расширением, заданным параметром extension

extension{‘.f’, ‘.f90’}, optional

Расширение файла, если source_fn не указано. Расширение указывает, какой стандарт Fortran используется. По умолчанию f, что подразумевает стандарт F77.

Добавлена в версии 1.11.0.

Возвращаемое значение
resultint

0 при успешном выполнении

Примеры

>>> import numpy.f2py
>>> fsource = '''
...       subroutine foo
...       print*, "Hello world!"
...       end 
... '''
>>> numpy.f2py.compile(fsource, modulename='hello', verbose=0)
0
>>> import hello
>>> hello.foo()
 Hello world!

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/f2py/usage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API