Skip to content

[Feature] Python 3.14 support #3662

@Andrej730

Description

@Andrej730

Describe the bug
Fail to install changedetection.io from pip on Python 3.14

Version

v0.45.14

How did you install?

uv tool install changedetection.io (by default currently is using Python 3.14)

Results in errors below. Which is understandable - that version of lxml is not built for Python 3.14 and therefore it's trying to build it from source and it fails since libxml libraries are not available from PATH.

Ignoring existing environment for `changedetection-io`: the requested Python interpreter does not match the environment interpreter
Resolved 76 packages in 73ms
  × Failed to build `lxml==5.4.0`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit code: 1)

      [stdout]
      Building lxml version 5.4.0.
      Building without Cython.
      Building against pre-built libxml2 andl libxslt libraries
      running bdist_wheel
      running build
      running build_py
      copying src\lxml\builder.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\cssselect.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\doctestcompare.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\ElementInclude.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\pyclasslookup.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\sax.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\usedoctest.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\_elementpath.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\__init__.py -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\includes\__init__.py -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\html\builder.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\clean.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\defs.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\diff.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\ElementSoup.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\formfill.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\html5parser.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\soupparser.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\usedoctest.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\_diffcommand.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\_html5builder.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\_setmixin.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\html\__init__.py -> build\lib.win-amd64-cpython-314\lxml\html
      copying src\lxml\isoschematron\__init__.py -> build\lib.win-amd64-cpython-314\lxml\isoschematron
      copying src\lxml\etree.h -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\etree_api.h -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\lxml.etree.h -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\lxml.etree_api.h -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\etree.pyx -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\objectify.pyx -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\apihelpers.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\classlookup.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\cleanup.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\debug.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\docloader.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\dtd.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\extensions.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\iterparse.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\nsclasses.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\objectpath.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\parser.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\parsertarget.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\proxy.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\public-api.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\readonlytree.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\relaxng.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\saxparser.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\schematron.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\serializer.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xinclude.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xmlerror.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xmlid.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xmlschema.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xpath.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xslt.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\xsltext.pxi -> build\lib.win-amd64-cpython-314\lxml
      copying src\lxml\includes\c14n.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\config.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\dtdvalid.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\etreepublic.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\htmlparser.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\relaxng.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\schematron.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\tree.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\uri.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xinclude.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xmlerror.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xmlparser.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xmlschema.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xpath.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\xslt.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\__init__.pxd -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\etree_defs.h -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\includes\lxml-version.h -> build\lib.win-amd64-cpython-314\lxml\includes
      copying src\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\rng
      copying src\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl
      copying src\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl ->
      build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl ->
      build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win-amd64-cpython-314\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
      running build_ext
      building 'lxml.etree' extension
      "L:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DCYTHON_CLINE_IN_TRACEBACK=0
      -Isrc -Isrc\lxml\includes -IL:\Software\uv\UV_CACHE_DIR\builds-v0\.tmpYMZlg2\include -IL:\Software\uv\UV_PYTHON_INSTALL_DIR\cpython-3.14.0-windows-x86_64-none\include
      -IL:\Software\uv\UV_PYTHON_INSTALL_DIR\cpython-3.14.0-windows-x86_64-none\Include "-IL:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include"
      "-IL:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include" "-IL:\Software\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include"
      "-IL:\Windows Kits\10\include\10.0.26100.0\ucrt" "-IL:\Windows Kits\10\\include\10.0.26100.0\\um" "-IL:\Windows Kits\10\\include\10.0.26100.0\\shared" "-IL:\Windows
      Kits\10\\include\10.0.26100.0\\winrt" "-IL:\Windows Kits\10\\include\10.0.26100.0\\cppwinrt" /Tcsrc\lxml\etree.c /Fobuild\temp.win-amd64-cpython-314\Release\src\lxml\etree.obj
      -w
      etree.c
      L:\Software\uv\UV_CACHE_DIR\sdists-v9\pypi\lxml\5.4.0\C-IdmT07SaQCIOah436s4\src\src\lxml\includes/etree_defs.h(12): fatal error C1083: Cannot open include file:
      'libxml/xmlversion.h': No such file or directory
      Compile failed: command 'L:\\Software\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      "L:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD
      -I/usr/include/libxml2 "-IL:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include" "-IL:\Software\Microsoft Visual
      Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include" "-IL:\Software\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IL:\Windows
      Kits\10\include\10.0.26100.0\ucrt" "-IL:\Windows Kits\10\\include\10.0.26100.0\\um" "-IL:\Windows Kits\10\\include\10.0.26100.0\\shared" "-IL:\Windows
      Kits\10\\include\10.0.26100.0\\winrt" "-IL:\Windows Kits\10\\include\10.0.26100.0\\cppwinrt" /TcC:\Users\Andrej\AppData\Local\Temp\xmlXPathInitd1u3v3po.c
      /FoUsers\Andrej\AppData\Local\Temp\xmlXPathInitd1u3v3po.obj
      xmlXPathInitd1u3v3po.c
      C:\Users\Andrej\AppData\Local\Temp\xmlXPathInitd1u3v3po.c(1): fatal error C1083: Cannot open include file: 'libxml/xpath.h': No such file or directory
      *********************************************************************************
      Could not find function xmlXPathInit in library libxml2. Is libxml2 installed?
      Is your C compiler installed and configured correctly?
      *********************************************************************************

      [stderr]
      <string>:67: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal
      as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
      L:\Software\uv\UV_CACHE_DIR\builds-v0\.tmpYMZlg2\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 :: BSD License

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

      !!
        self._finalize_license_expression()
      cl : Command line warning D9025 : overriding '/W3' with '/w'
      error: command 'L:\\Software\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2

      hint: This usually indicates a problem with the package or the build environment.
  help: `lxml` (v5.4.0) was included because `changedetection-io` (v0.45.14) depends on `lxml`

Desktop (please complete the following information):
Windows 11

Metadata

Metadata

Assignees

Labels

triageupstream-bugissue with library - not directly with changedetection

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions