Dear Hive,
I am using f2py to compile Fortran code into a python module:
#!/bin/bash
#module use /g/data/hh5/public/modules
#module load conda/analysis3-unstable
module use /g/data/xp65/public/modules
module load conda/analysis3-25.04
f2py -m module -c mrnbc.f qmm.f stat.f
mv module.cpython-310-x86_64-linux-gnu.so ../
This is called from within the Python code via: import module
However, I am getting errors in the f2py compilations step. Here is the complete output:
Loading conda/analysis3-25.04
Loading requirement: singularity
Traceback (most recent call last):
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/bin/f2py", line 10, in <module>
sys.exit(main())
^^^^^^
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/f2py/f2py2e.py", line 766, in main
run_compile()
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/f2py/f2py2e.py", line 594, in run_compile
build_backend = f2py_build_generator(backend_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/f2py/_backends/__init__.py", line 6, in f2py_build_generator
from ._distutils import DistutilsBackend
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/f2py/_backends/_distutils.py", line 3, in <module>
from numpy.distutils.core import setup, Extension
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/distutils/core.py", line 24, in <module>
from numpy.distutils.command import config, config_compiler, \
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/distutils/command/config.py", line 19, in <module>
from numpy.distutils.mingw32ccompiler import generate_manifest
File "/g/data/xp65/public/apps/med_conda/envs/analysis3-25.04/lib/python3.11/site-packages/numpy/distutils/mingw32ccompiler.py", line 27, in <module>
from distutils.msvccompiler import get_build_version as get_build_msvc_version
ModuleNotFoundError: No module named 'distutils.msvccompiler'
mv: cannot stat 'module.cpython-310-x86_64-linux-gnu.so': No such file or directory
A quick Copilot search response is: numpy.distutils is trying to import a Windows-specific module (msvccompiler) even on non-Windows systems like macOS or Linux.
Note that this worked on hh5 analysis-unstable. I am using xp65 analysis-25.04
Cheers,
Justin