Fixes these errors:
ModuleNotFoundError: No module named 'distutils.msvccompiler'

Signed-off-by: Markus Heidelberg <[email protected]>
---

Is this an acceptable fix? The example on the NumPy website works.

Later I found this fix:
  https://github.com/numpy/numpy/commit/1cc02cc6710384c52e1082a33d1617504eaed296
But there was no fix for the second build error, so I kept my solution.

 ...istutils.msvccompiler-in-setuptools-.patch | 45 +++++++++++++++++++
 patches/numpy-1.26.4/series                   |  3 +-
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 
patches/numpy-1.26.4/0002-handle-missing-distutils.msvccompiler-in-setuptools-.patch

diff --git 
a/patches/numpy-1.26.4/0002-handle-missing-distutils.msvccompiler-in-setuptools-.patch
 
b/patches/numpy-1.26.4/0002-handle-missing-distutils.msvccompiler-in-setuptools-.patch
new file mode 100644
index 000000000..c24cff9f9
--- /dev/null
+++ 
b/patches/numpy-1.26.4/0002-handle-missing-distutils.msvccompiler-in-setuptools-.patch
@@ -0,0 +1,45 @@
+From: Markus Heidelberg <[email protected]>
+Date: Tue, 16 Dec 2025 11:50:00 +0100
+Subject: [PATCH] handle missing distutils.msvccompiler in setuptools >= 74.0.0
+
+distutils._msvccompiler exists, but only provides the MSVCCompiler
+class, not the get_build_version function.
+
+Signed-off-by: Markus Heidelberg <[email protected]>
+---
+ numpy/distutils/mingw32ccompiler.py | 4 +++-
+ numpy/distutils/msvccompiler.py     | 2 +-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/numpy/distutils/mingw32ccompiler.py 
b/numpy/distutils/mingw32ccompiler.py
+index 4763f41ad326..f504d8b6223d 100644
+--- a/numpy/distutils/mingw32ccompiler.py
++++ b/numpy/distutils/mingw32ccompiler.py
+@@ -24,13 +24,15 @@
+ 
+ import distutils.cygwinccompiler
+ from distutils.unixccompiler import UnixCCompiler
+-from distutils.msvccompiler import get_build_version as get_build_msvc_version
+ from distutils.errors import UnknownFileError
+ from numpy.distutils.misc_util import (msvc_runtime_library,
+                                        msvc_runtime_version,
+                                        msvc_runtime_major,
+                                        get_build_architecture)
+ 
++def get_build_msvc_version():
++    return None
++
+ def get_msvcr_replacement():
+     """Replacement for outdated version of get_msvcr from cygwinccompiler"""
+     msvcr = msvc_runtime_library()
+diff --git a/numpy/distutils/msvccompiler.py b/numpy/distutils/msvccompiler.py
+index 2b93221baac8..5e2a030404da 100644
+--- a/numpy/distutils/msvccompiler.py
++++ b/numpy/distutils/msvccompiler.py
+@@ -1,5 +1,5 @@
+ import os
+-from distutils.msvccompiler import MSVCCompiler as _MSVCCompiler
++from distutils._msvccompiler import MSVCCompiler as _MSVCCompiler
+ 
+ from .system_info import platform_bits
+ 
diff --git a/patches/numpy-1.26.4/series b/patches/numpy-1.26.4/series
index a493ac227..57cb0bc5b 100644
--- a/patches/numpy-1.26.4/series
+++ b/patches/numpy-1.26.4/series
@@ -1,4 +1,5 @@
 # generated by git-ptx-patches
 #tag:base --start-number 1
 0001-use-path-from-environment-only-for-library_dirs.patch
-# d9bc0f9a910e0d311ad4c7761b8f6062  - git-ptx-patches magic
+0002-handle-missing-distutils.msvccompiler-in-setuptools-.patch
+# 3e55650c70507297b27d494f0e36c7d4  - git-ptx-patches magic
-- 
2.43.0


Reply via email to