Problem installing scikit-image on Python 3.14 Windows 10

I have previously used scikit-image on Windows 10, Python 3.13 no problem.

I’m trying to install on Python 3.14, but getting a raft of error (below). I’m suspecting it’s a scikit-image issue with Python 3.14 (as it is just out). Is this a Python 3.14 issue or a scikit-image issue? (I have also posted this on the scikit technical problems chat)

C:\> py -m pip install scikit-image
Collecting scikit-image
  Using cached scikit_image-0.25.2.tar.gz (22.7 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 3221225477
  ╰─> [256 lines of output]
      + meson setup C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\.mesonpy-a_l1bsux -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\.mesonpy-a_l1bsux\meson-python-native-file.ini
      The Meson build system
      Version: 1.9.1
      Source dir: C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e
      Build dir: C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\.mesonpy-a_l1bsux
      Build type: native build
      Project name: scikit-image
      Project version: 0.25.2
      C compiler for the host machine: gcc (gcc 13.2.0 "gcc (GCC) 13.2.0")
      C linker for the host machine: gcc ld.bfd 2.41
      C++ compiler for the host machine: g++ (gcc 13.2.0 "g++ (GCC) 13.2.0")
      C++ linker for the host machine: g++ ld.bfd 2.41
      Cython compiler for the host machine: cython (cython 3.1.4)
      Host machine cpu family: x86_64
      Host machine cpu: x86_64
      Compiler for C supports arguments -Wno-unused-function: YES
      Library m found: YES
      Checking if "-Wl,--version-script" links: YES
      Program cython found: YES (C:\Users\Peter2\AppData\Local\Temp\pip-build-env-vcnvhb32\overlay\Scripts\cython.EXE)
      Program pythran found: YES (C:\Users\Peter2\AppData\Local\Temp\pip-build-env-vcnvhb32\overlay\Scripts\pythran.EXE)
      Program skimage/_build_utils/copyfiles.py found: YES (python C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\skimage/_build_utils/copyfiles.py)
      Program python found: YES (C:\Users\Peter2\AppData\Local\Programs\Python\Python314\python.exe)
      Run-time dependency python found: YES 3.14
      Program _build_utils/cythoner.py found: YES (python C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\skimage\_build_utils/cythoner.py)
      Compiler for C++ supports arguments -Wno-cpp: YES
      Build targets in project: 57

      scikit-image 0.25.2

        User defined options
          Native files: C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\.mesonpy-a_l1bsux\meson-python-native-file.ini
          b_ndebug    : if-release
          b_vscrt     : md
          buildtype   : release

      Found ninja.EXE-1.13.0.git.kitware.jobserver-pipe-1 at C:\Users\Peter2\AppData\Local\Temp\pip-build-env-vcnvhb32\normal\Scripts\ninja.EXE
      + meson compile
      [1/165] Generating 'skimage\\_shared\\transform.cp314-win_amd64.pyd.p\\transform.c'
      FAILED: [code=1] skimage/_shared/transform.cp314-win_amd64.pyd.p/transform.c
      "python" "C:\Users\Peter2\AppData\Local\Temp\pip-install-alef39ua\scikit-image_2bc6162c12154ba0816e4dfdeaba8f6e\skimage\_build_utils/cythoner.py" "../skimage/_shared/transform.pyx" "skimage/_shared/transform.cp314-win_amd64.pyd.p/transform.c" "-Xfreethreading_compatible=True"
      CreateProcess failed: The system cannot find the file specified.
...
      CreateProcess failed: The system cannot find the file specified.
      ninja: error: exception: 0xC0000005
      ninja: warning: minidump created: ninja: error: exception: 0xC0000005
...
      INFO: autodetecting backend as ninja
      INFO: calculating backend command to run: C:\Users\Peter2\AppData\Local\Temp\pip-build-env-vcnvhb32\normal\Scripts\ninja.EXE
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
```

They haven’t seemed to have released a wheel for Python 3.14 yet: scikit-image · PyPI.

I assume support for Python 3.14 will be coming as soon as it is available.

Ah I hadn’t checked that page. Thanks.

I opened an issue to alert the maintainers and start the ball rolling on a new release: Python 3.14 support · Issue #7918 · scikit-image/scikit-image · GitHub

Thank you Nathan :slightly_smiling_face:

1 Like

From the build instructions it sounds like it would not be too hard to build scikit-image but I can’t tell from the error log shown what the problem is. I guess you are missing some executable:

CreateProcess failed: The system cannot find the file specified.

It would be nicer if the error said a bit more about which file was “specified”.

It is possible though that some changes are needed in scikit-image to be able to build with Python 3.14.

Hmmm. Immediately before the “CreateProcess failed” message is the line:

Looks like it’s using Python to generate a .c file which then gets built into a .pyd.
Unfrotunately, it cleans up after itself a little too well, and the temp directory is removed, so I can’t see how far it got into the process.

Is it “python” itself that can’t be found? One Windows, we always use the python launcher “py”.

But nothing’s changed on my computer since Python 3.13, which installed scikit-image fine. Perhaps it already had a pre-built binary for Windows? And didn’t need to build it from scratch this way?

Perhaps all that’s needed is a pre-built binary wheel. But it would still be good for it to build from scratch for Windows.

There are wheels for Python 3.13 in PyPI as shown in the link above.

Maybe. If CreateProcess failed then I think it means that the executable cannot be found but on Windows the executable is not necessarily the first part of the “command line”. I’m also unsure how exactly meson executes the “python” command specifically given that meson is itself implemented in Python and can presumably access sys.executable to get the interpreter path as needed.

It is hard to say what the problem is but I can say that pip install scikit-image worked fine for me with Python 3.14 on Linux. It just took about 5 minutes to build. All dependencies were also installed from wheels so it is only scikit-image that seems to be missing 3.14 wheels.

Possible complications for building on Windows are that you maybe don’t have a standard setup for compiling C code e.g. here it picks up gcc:

      C compiler for the host machine: gcc (gcc 13.2.0 "gcc (GCC) 13.2.0")
      C linker for the host machine: gcc ld.bfd 2.41
      C++ compiler for the host machine: g++ (gcc 13.2.0 "g++ (GCC) 13.2.0")
      C++ linker for the host machine: g++ ld.bfd 2.41

Maybe you have MinGW installed?

The default for building Python C extensions on windows is MSVC which you presumably don’t have installed or otherwise meson would have picked it up.

In CI it looks like scikit-image needs some version of LLVM:

It might be that this needs some nonstandard setup to be able to build on Windows or it might just be some issue with the particular versions in the CI images.