[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1026104: why does python3-numpy depend on python3.11?



Thank you very much, Timo, for this very helpful communication.

I am indeed using a local cmake because I am occasionally contributing
to the CMake docs.

So do I understand correctly:
- If I continue to use a local CMake installation, just I have to supply the
  extra command-line options
    -DPython3_FIND_STRATEGY=LOCATION -DPython3_FIND_UNVERSIONED_NAMES=FIRST
  which are available from unpatched CMake. They available in CMake versions
  3.25 and later?
- If I return to a fully Debian based system, there will be no more transient
  problems with numpy vs multi Python minor because the Debian-patched CMake
  will handle them? It will do so by inserting the aformentioned -D options?

Thanks again, Joachim


On 11/01/2023 10:48, Timo Röhling wrote:
Hi Joachim,

On Wed, 30 Nov 2022 17:22:08 +0100 Joachim Wuttke <j.wuttke@fz-juelich.de> wrote:
Why does python3-numpy under bookworm, since a few days, depend on python3.10
*and* on python3.11?

This breaks our software projects that combine C++ with Python.
The CMake command

   find_package(Python3 3.${version_minor_min} REQUIRED
                COMPONENTS Interpreter Development NumPy)

fails with error message

CMake Error at /usr/local/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
   Could NOT find Python3 (missing: Development NumPy Development.Module
   Development.Embed) (found suitable version "3.11.0", minimum required is
   "3.7")
Call Stack (most recent call first):
   /usr/local/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
   /usr/local/share/cmake-3.23/Modules/FindPython/Support.cmake:3192 (find_package_handle_standard_args)
   /usr/local/share/cmake-3.23/Modules/FindPython3.cmake:490 (include)
   CMakeLists.txt:154 (find_package)

CMake maintainer here who stumbled upon your bug report. This has
been a known issue with upstream CMake looking for the newest
available Python version by default. It has been addressed in Debian
[1], but seeing that /usr/local/share/cmake-3.23 shows up in the
callstack above, I suspect that you are not using the Debian version
of CMake.

For the record, you can work around the issue with the extra command
line options

     -DPython3_FIND_STRATEGY=LOCATION -DPython3_FIND_UNVERSIONED_NAMES=FIRST

I recommend that you switch to the Debian CMake package, though.


Cheers
Timo


[1] https://sources.debian.org/src/cmake/3.25.1-1/debian/patches/0001-Prefer-default-Python-version.patch/



Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


Reply to: