Cannot install pyodbc for Python 3.14

  1. Python machine: MS Windows Server v24H2 (OS Build 26100.6584) (Windows Server 2025 Datacenter)
  2. I seem to be a “local admin” on the Python machine but I’m not sure what my limits are. I’m not a sysadmin.
  3. Python in c:\program files\Python314. think I had local admin rights when it was installed. This is installed for all users.
  4. Programs are actually stored on another network drive mapped as E:. So I’m trying to install packages in the project dir on E:.

I am installing Python on a new machine which I use via a Remote Desktop from my laptop. When I go to my project dir E:\Jobs\Test\Myjob and do pip install pyodbc I get these errors.

Defaulting to user installation because normal site-packages is not writeable
Collecting pyodbc
  Using cached pyodbc-5.2.0.tar.gz (116 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: pyodbc
  Building wheel for pyodbc (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pyodbc (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [49 lines of output]
      WARNING: '' not a valid package name; please use only .-separated package names in setup.py
      C:\users\MYUSER\AppData\Local\Temp\2\pip-build-env-bfe1h5dk\overlay\Lib\site-packages\setuptools\config\_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
      !!

              ********************************************************************************
              Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

              By 2026-Feb-18, you need to update your project and remove deprecated calls
              or your builds will no longer be supported.

              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************

      !!
        corresp(dist, value, root_dir)
      C:\users\MYUSER\AppData\Local\Temp\2\pip-build-env-bfe1h5dk\overlay\Lib\site-packages\setuptools\config\_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!

              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:

              License :: OSI Approved :: MIT No Attribution License (MIT-0)

              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************

      !!
        dist._finalize_license_expression()
      C:\users\MYUSER\AppData\Local\Temp\2\pip-build-env-bfe1h5dk\overlay\Lib\site-packages\setuptools\dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!

              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:

              License :: OSI Approved :: MIT No Attribution License (MIT-0)

              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************

      !!
        self._finalize_license_expression()
      running bdist_wheel
      running build
      running build_py
      creating build\lib.win-amd64-cpython-314
      copying src\pyodbc.pyi -> build\lib.win-amd64-cpython-314
      running build_ext
      building 'pyodbc' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyodbc
Failed to build pyodbc
error: failed-wheel-build-for-install

× Failed to build installable wheels for some pyproject.toml based projects
╰─> pyodbc

Is the only thing I need to do is install VC++ 14.0 tools? Why isn’t that on this version of Windows? This Windows seems pretty new.

Thank you.

No version of Windows ships with a C compiler. So yes, just do as it says and install VC++. Or twiddle your thumbs until pyodbc gets a release out with 3.14 wheels precompiled.

Thank you. Wait, is pyodbc not compatible with Python 3.14?

I’m not a C programmer. Will the VC Tools work right out of the box without any configuring from me?

It’s not that they’re incompatible – it’s just that they haven’t published for 3.14 yet. If you look at the available wheels page, you can see that every .whl file is tied to a specific Python version and they haven’t caught up with 3.14 yet (there’s an open issue for it).

Probably not. Setting up VC is a pain and that’s assuming that pyodbc doesn’t require any of its own special setup steps.

2 Likes

Thank you. I’m looking at the wheels page you had a link for and am having trouble finding a version of Python that has a wheel for pyodbc.

Does pyodbc have a wheel for Python 3.13? Perhaps I need to install an older Python since I don’t know how to use a C compiler.

At the bottom of the pyodbc wheels page I see stuff like this with no indication of a python version it goes with.

pyodbc-5.2.0-cp38-cp38-win_amd64.whl
pyodbc-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl
pyodbc-5.2.0-cp39-cp39-macosx_11_0_arm64.whl
pyodbc-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pyodbc-5.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyodbc-5.2.0-cp39-cp39-win32.whl
pyodbc-5.2.0-cp39-cp39-win_amd64.whl
pyodbc-5.2.0.tar.gz


I do have pyodbc working on my laptop with Python 3.11.5.

Wait, under pyodbc files I filtered on my os and see this. So does “CPython 3.13” mean that’s the most recent wheel for Python 3.13?

I have a few other packages I use that I have to install for my group of programs that may not work with Python 3.14 as well.

Each time a new python release is made it takes time for many packages like pyodbc to be released support the new version.

Looking on PyPi at the package’s page will tell you if there is a build for the version of python that you are using.

Stay on your working version of python until you see all the packages you need work for the new version.

Building C/C++ extensions on Windows requires you know the tools and can also build all the C/C++ dependencies. Tl;dr just wait.

1 Like

For C externsion packages, you can download the source code and read how it gets the header files path and what source file, lib file or dll it need in “setup.py”. Combined with the condition in your computer and change the way to get the paths or files.
Use pip install . to test whether it can be installed now. If there is some things that hard to understand you can also ask AI to get some help.
Of course, it is just a temporary solution.

Pyodbc uses the pypa/cibuildwheel action to build its wheels, which as expected is now building 3.14 wheels. I don’t know what the publishing process is, nor why the 3.14 ones are excluded. And these aren’t official releases, and should be tested against the full test suite before relying on them. But unreleased Pyodbc wheels for 3.14 can be down loaded here, from the project’s own CD pipeline:
https://github.com/mkleehammer/pyodbc/actions/runs/18481888011/artifacts/4260110111

Build output

Building cp314-win32 wheel
CPython 3.14 Windows 32bit

Installing Python cp314...
                                                             ✓ 10.00s
Setting up build environment...
                                                              ✓ 5.09s
Installing build tools...
                                                              ✓ 5.05s
Building wheel...
                                                             ✓ 14.52s

✓ cp314-win32 finished in 34 seconds

Building cp314t-win32 wheel
CPython 3.14t Windows 32bit

Installing Python cp314t...
                                                             ✓ 10.40s
Setting up build environment...
                                                              ✓ 4.41s
Installing build tools...
                                                              ✓ 5.52s
Building wheel...
                                                             ✓ 15.08s

✓ cp314t-win32 finished in 35 seconds

Building cp314-win_amd64 wheel
CPython 3.14 Windows 64bit

Installing Python cp314...
                                                             ✓ 10.05s
Setting up build environment...
                                                              ✓ 4.23s
Installing build tools...
                                                              ✓ 4.38s
Building wheel...
                                                             ✓ 13.73s

✓ cp314-win_amd64 finished in 32 seconds

Building cp314t-win_amd64 wheel
CPython 3.14t Windows 64bit

Installing Python cp314t...
                                                             ✓ 10.21s
Setting up build environment...
                                                              ✓ 4.09s
Installing build tools...
                                                              ✓ 4.64s
Building wheel...
                                                             ✓ 14.31s

✓ cp314t-win_amd64 finished in 33 seconds
2 Likes

Thank you but I’m getting a “404 page missing error” on your link https://github.com/mkleehammer/pyodbc/actions/runs/18481888011/artifacts/4260110111.

However I did find more Actions here: Workflow runs · mkleehammer/pyodbc · GitHub It does look like the author is trying to build the wheels but I’m not familiar with what I should look for on the Actions page.

I think I’ll wait for a tested wheel. :slight_smile:

I use Windows, it looks like the Windows X86 wheel has been compiled. How do I know when it’s been tested so I can install it with pip in my system?

I would say just wait for a release but it’s already happened. pip install pyodbc should just work now.

Ah sorry - that’s good to know for future reference.

As it happens, Github logged me out on this browser. So at first, my link didn’t work for me either (just now). It worked after I logged back in again now though (and on another browser I’m logged in on).

I would recommend you follow the second link in any case, to understand where the wheels have come from (instead of trusting random links to binaries, even from myself). When logged out, I can still follow the second link (“Build output”), but it doesn’t let me see the details for the Upload artefacts job, which is where I got that first link from.

Re: testing. [edit] Pyodbc is tested on Windows via appveyor, I just haven’t noticed any tests for 3.14

You’re right, I just installed in Oct 28, your post was Oct 20. Thanks!