рдбреЙрдХреНрд╕ / рдпреВрдЬрд░ рдЧрд╛рдЗрдб рдХреЛ f2py рд╕реЗ рдлреЙрд▓реЛ рдХрд░рддреЗ рд╣реБрдП, рдпрджрд┐ рдХреЛрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде .c
рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ
$ f2py -m fib1 fib1.f
fib1module.c
рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХрд╛рдоред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрд╛рдпрдерди рдореЗрдВ рдЖрдпрд╛рдд рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИ
$ f2py -c fib1module.c
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
$ f2py -c fib1module.c --verbose
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "untitled" sources
build_src: building npy-pkg config files
running build_ext
new_compiler returns <class 'distutils.unixccompiler.UnixCCompiler'>
customize UnixCCompiler
customize UnixCCompiler using build_ext
********************************************************************************
<class 'distutils.unixccompiler.UnixCCompiler'>
preprocessor = ['gcc', '-pthread', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-Wl,--sysroot=/', '-E']
compiler = ['gcc', '-pthread', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-Wl,--sysroot=/', '-Wsign-compare', '-DNDEBUG', '-g', '-fwrapv', '-O3', '-Wall', '-Wstrict-prototypes', '-std=c99']
compiler_so = ['gcc', '-pthread', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-Wl,--sysroot=/', '-Wsign-compare', '-DNDEBUG', '-g', '-fwrapv', '-O3', '-Wall', '-Wstrict-prototypes', '-fPIC', '-std=c99']
compiler_cxx = ['g++', '-pthread', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-Wl,--sysroot=/']
linker_so = ['gcc', '-pthread', '-shared', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-L/opt/miniconda/envs/numpy-dev/lib', '-Wl,-rpath=/opt/miniconda/envs/numpy-dev/lib', '-Wl,--no-as-needed', '-Wl,--sysroot=/']
linker_exe = ['gcc', '-pthread', '-B', '/opt/miniconda/envs/numpy-dev/compiler_compat', '-Wl,--sysroot=/']
archiver = ['ar', 'rc']
ranlib = None
libraries = []
library_dirs = []
include_dirs = ['/opt/miniconda/envs/numpy-dev/include/python3.6m']
********************************************************************************
building 'untitled' extension
compiling C sources
C compiler: gcc -pthread -B /opt/miniconda/envs/numpy-dev/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -std=c99
compile options: '-I/home/melissa/projects/numpy/numpy/core/include -I/opt/miniconda/envs/numpy-dev/include/python3.6m -c'
gcc: fib1module.c
fib1module.c:16:10: fatal error: fortranobject.h: Arquivo ou diret├│rio inexistente
16 | #include "fortranobject.h"
| ^~~~~~~~~~~~~~~~~
compilation terminated.
error: Command "gcc -pthread -B /opt/miniconda/envs/numpy-dev/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -std=c99 -I/home/melissa/projects/numpy/numpy/core/include -I/opt/miniconda/envs/numpy-dev/include/python3.6m -c fib1module.c -o /tmp/tmpyjgu4iq5/fib1module.o -MMD -MF /tmp/tmpyjgu4iq5/fib1module.o.d" failed with exit status 1
рдХрд░рддреЗ рд╣реБрдП
$ f2py -c fib1module.c -I/home/melissa/projects/numpy/numpy/f2py/src -m fib1module
рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ (рдпрд╣ рдореЗрд░реЗ fortranobject.h
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрдерд╛рди рд╣реИ), рд▓реЗрдХрд┐рди рддрдм рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ:
>>> import fib1module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /home/melissa/projects/numpy/doc/source/f2py/fib1module.cpython-36m-x86_64-linux-gnu.so: undefined symbol: PyFortran_Type
рдЯреА рдПрд▓; DR: рдХреНрдпрд╛ рдпрд╣ рдмрдЧ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдЬрд┐рд╕реЗ рд╣рдо рдХрд░рдиреЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ ( .c
рд╕реНрд░реЛрдд рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ)?
>>> import sys, numpy; print(numpy.__version__, sys.version)
1.18.0.dev0+8d217b0 3.6.7 | packaged by conda-forge | (default, Jul 2 2019, 02:18:42)
[GCC 7.3.0]
рд░рд┐рдкреЛрд░реНрдЯ @melissawm рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://numpy.org/devdocs/f2py/getting-started.html?
рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:
$ f2py -m fib1 fib1.f
$ f2py -c fib1module.c
...
fib1module.c:16:10: fatal error: 'fortranobject.h' file not found
#include "fortranobject.h"
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЙрдХ рдкреГрд╖реНрда $ f2py -c -m fib1 fib1.f
рдмрджрд▓реЗ (рдХреЛрдб рдХреЛ рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ -m
рдФрд░ -c
рдХреЛ рдХрднреА рд╕рдорд░реНрдерди рдирд╣реАрдВ рдорд┐рд▓рд╛ред -c
рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдЬреЛрдбрд╝рдХрд░ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИ - рд╢рд╛рдпрдж рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
@ рдкрд┐рдпрд░реВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдбреЙрдХреНрд╕ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрд▓рдд рд╣реИ:
$ f2py -c fib1module.c
f2py -c ...
рдХреЛ рдпрд╛ рддреЛ рдореМрдЬреВрджрд╛ .pyf
рдлрд╝рд╛рдЗрд▓ (рдкреНрд▓рд╕ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ / рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП) рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХрд┐рд╕реА рдХреЛ -m <modulename>
рд╡рд┐рдХрд▓реНрдк (рдкреНрд▓рд╕ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ / рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЗрдВ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред f2py -c
рдЙрддреНрдкрдиреНрди рд╕реА / рдПрдкреАрдЖрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЭрдВрдбреЗ рдФрд░ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред
рдЕрдиреБрд╡рд░реНрддреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
f2py -c -m fib1 fib1.f
рдпрд╛
f2py -m fib1 fib1.f -h fib1.pyf
f2py -c fib1.pyf fib1.f
рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд f2py рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдлрд▓рддрд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рджрд░рдЕрд╕рд▓, рдореИрдВ рдЗрд╕ рдкреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://numpy.org/devdocs/f2py/usage.html
рд╡рд╣рд╛рдБ, рдЖрдЗрдЯрдо 2 рдФрд░ 3 рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ: рдЖрдЗрдЯрдо 2 рдХреЛ f2py
рдмрд┐рдирд╛ -m
рдпрд╛ -c
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдЯрдо 3 рдХрд╣рддрд╛ рд╣реИ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
f2py -c <options> <fortran files> \
[[ only: <fortran functions> : ] \
[ skip: <fortran functions> : ]]... \
[ <fortran/c source files> ] [ <.o, .a, .so files> ]
рдпрджрд┐
<fortran files>
рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд░реЛрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рд╕рднреА рдлреЛрд░рдЯреНрд░рд╛рди рдФрд░ рд╕реА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ
рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓<modulename>.so
рдЬреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐
<fortran files>
рдореЗрдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдирд┐рдпрдорд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлреЛрд░рдЯреНрд░рд╛рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ред
рдЖрдкрдиреЗ рдЬреЛ рдХрд╣рд╛ рд╣реИ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо .c
рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ, рд╣реИ рдирд╛? рдпрджрд┐ рд╣рдо .c
рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИ?
рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рджрд░рдЕрд╕рд▓, рдореИрдВ рдЗрд╕ рдкреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://numpy.org/devdocs/f2py/usage.html
рдпрд╣ рдкреГрд╖реНрда f2py
рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдпрд╣ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ https://docs.python.org/3.8/extending/index.html
рдЬрдмрдХрд┐ f2py рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ C рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рд▓рдкреЗрдЯрддрд╛ рд╣реИ ( .c
рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд) рдФрд░ рдЗрд╕рд▓рд┐рдП "рд╣рдо рд╕реАрдзреЗ .c рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ" рдХрдерди рдЧрд▓рдд рд╣реИред
рдПрдХ рдХреЛ .c
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ f2py рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ .c
рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддреЗ рд╣реИрдВред .c
рдлрд╝рд╛рдЗрд▓ рдЬреЛ f2py рдЬреЗрдирд░реЗрдЯ рдХрд░рддреА рд╣реИ, рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИ, рдЬрдм рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдпрд╛ f2py рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдбреЙрдХреНрд╕ рдХреЗ рдКрдкрд░ @pearu рд╕реЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ (рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?)
рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рд╡рд╛рд▓рд╛ рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдПред
рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рд╡рд╛рд▓рд╛ рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдПред
+1
@melissawm рдЖрдк рдЕрдкрдиреЗ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рдореЗрдВ closes gh-14960
рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ PR рдХреЗ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдбреЙрдХреНрд╕ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрд▓рдд рд╣реИ:
f2py -c ...
рдХреЛ рдпрд╛ рддреЛ рдореМрдЬреВрджрд╛.pyf
рдлрд╝рд╛рдЗрд▓ (рдкреНрд▓рд╕ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ / рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП) рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХрд┐рд╕реА рдХреЛ-m <modulename>
рд╡рд┐рдХрд▓реНрдк (рдкреНрд▓рд╕ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ / рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЗрдВ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ редf2py -c
рдЙрддреНрдкрдиреНрди рд╕реА / рдПрдкреАрдЖрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЭрдВрдбреЗ рдФрд░ рд╕реНрд░реЛрдд / рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)редрдЕрдиреБрд╡рд░реНрддреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рдпрд╛
рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд f2py рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдлрд▓рддрд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИред