integer :: a
write(*,*) 'Hello from Fortran'
write(*,*) 'a = ', a
end subroutine print_int
subroutine print_mat_val( a )
integer :: a(0:2,0:2)
write(*,*) 'a(1,2) = ', a(1,2)
end subroutine print_mat_val
end module main
Next I create a shared object from this code using F2py, which is part of NumPy
f2py --fcompiler=gnu95 -c -m main main.f90
You can now import the module in Python. For example I create a file called example.py with the following code,
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
You can run the Python script by typing,
The calls contain main.main because both the file and the module are named 'main'. It isn't necessary to wrap the subroutines in a module, but it could be helpful for more complex code.