Skip to content

py7zr fails to install on python 3.13 #640

Open
@Ravencentric

Description

@Ravencentric

Describe the bug

py7zr installation fails on python 3.13 because 2 of its dependencies do not have wheels for python 3.13:

This means that installing py7zr requires an environment that can build those dependencies.

To Reproduce

$ python --version
Python 3.13.2

$ python -m pip list
Package Version
------- -------
pip     25.0.1

$ python -m pip install py7zr
Collecting py7zr
  Downloading py7zr-0.22.0-py3-none-any.whl.metadata (16 kB)
Collecting texttable (from py7zr)
  Using cached texttable-1.7.0-py2.py3-none-any.whl.metadata (9.8 kB)
Collecting pycryptodomex>=3.16.0 (from py7zr)
  Downloading pycryptodomex-3.22.0-cp37-abi3-win_amd64.whl.metadata (3.4 kB)
Collecting pyzstd>=0.15.9 (from py7zr)
  Downloading pyzstd-0.16.2-cp313-cp313-win_amd64.whl.metadata (2.5 kB)
Collecting pyppmd<1.2.0,>=1.1.0 (from py7zr)
  Downloading pyppmd-1.1.1.tar.gz (1.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 10.2 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting pybcj<1.1.0,>=1.0.0 (from py7zr)
  Downloading pybcj-1.0.3-cp313-cp313-win_amd64.whl.metadata (4.0 kB)
Collecting multivolumefile>=0.2.3 (from py7zr)
  Using cached multivolumefile-0.2.3-py3-none-any.whl.metadata (6.3 kB)
Collecting inflate64<1.1.0,>=1.0.0 (from py7zr)
  Downloading inflate64-1.0.1.tar.gz (896 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 896.1/896.1 kB 8.5 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting brotli>=1.1.0 (from py7zr)
  Downloading Brotli-1.1.0-cp313-cp313-win_amd64.whl.metadata (5.6 kB)
Collecting psutil (from py7zr)
  Downloading psutil-7.0.0-cp37-abi3-win_amd64.whl.metadata (23 kB)
Downloading py7zr-0.22.0-py3-none-any.whl (67 kB)
Downloading Brotli-1.1.0-cp313-cp313-win_amd64.whl (358 kB)
Using cached multivolumefile-0.2.3-py3-none-any.whl (17 kB)
Downloading pybcj-1.0.3-cp313-cp313-win_amd64.whl (24 kB)
Downloading pycryptodomex-3.22.0-cp37-abi3-win_amd64.whl (1.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 11.2 MB/s eta 0:00:00
Downloading pyzstd-0.16.2-cp313-cp313-win_amd64.whl (245 kB)
Downloading psutil-7.0.0-cp37-abi3-win_amd64.whl (244 kB)
Using cached texttable-1.7.0-py2.py3-none-any.whl (10 kB)
Building wheels for collected packages: inflate64, pyppmd
  Building wheel for inflate64 (pyproject.toml) ... done
  Created wheel for inflate64: filename=inflate64-1.0.1-cp313-cp313-win_amd64.whl size=35336 sha256=7e31540933b086a93e3c5e45a89d0e8dd4dca12c91ea387c3016b52ca6f41bbb
  Stored in directory: c:\users\raven\appdata\local\pip\cache\wheels\be\f7\79\7698a9ba6dff4c48de5b0b868634c8d4453a9e699d5962f69e
  Building wheel for pyppmd (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pyppmd (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [122 lines of output]
      C:\Users\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\overlay\Lib\site-packages\setuptools_scm\git.py:310: UserWarning: git archive did not support describe output
        warnings.warn("git archive did not support describe output")
      C:\Users\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\overlay\Lib\site-packages\setuptools_scm\git.py:328: UserWarning: unprocessed git archival found (no export subst applied)
        warnings.warn("unprocessed git archival found (no export subst applied)")
      C:\Users\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\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`.

              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\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\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 :: GNU Lesser General Public License v2 or later (LGPLv2+)

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

      !!
        dist._finalize_license_expression()
      C:\Users\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\overlay\Lib\site-packages\setuptools\dist.py:760: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!

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

              License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)

              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-313\pyppmd
      copying src\pyppmd\__init__.py -> build\lib.win-amd64-cpython-313\pyppmd
      creating build\lib.win-amd64-cpython-313\pyppmd\c
      copying src\pyppmd\c\c_ppmd.py -> build\lib.win-amd64-cpython-313\pyppmd\c
      running egg_info
      writing src\pyppmd.egg-info\PKG-INFO
      writing dependency_links to src\pyppmd.egg-info\dependency_links.txt
      writing requirements to src\pyppmd.egg-info\requires.txt
      writing top-level names to src\pyppmd.egg-info\top_level.txt
      writing manifest file 'src\pyppmd.egg-info\SOURCES.txt'
      ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any
      reading manifest file 'src\pyppmd.egg-info\SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching 'tox.ini'
      warning: no previously-included files found matching '.gitignore'
      warning: no previously-included files found matching '.gitattributes'
      warning: no previously-included files found matching '.woodpecker.yml'
      no previously-included directories found matching 'ci'
      no previously-included directories found matching 'issue_template'
      adding license file 'LICENSE'
      writing manifest file 'src\pyppmd.egg-info\SOURCES.txt'
      C:\Users\raven\AppData\Local\Temp\pip-build-env-36n2bhlp\overlay\Lib\site-packages\setuptools\command\build_py.py:212: _Warning: Package 'pyppmd.cffi' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'pyppmd.cffi' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.

              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'pyppmd.cffi' is explicitly added
              to the `packages` configuration field.

              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).

              You can read more about "package discovery" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

              If you don't want 'pyppmd.cffi' to be distributed and are
              already explicitly excluding 'pyppmd.cffi' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.

              You can read more about "package data files" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************

      !!
        check.warn(importable)
      copying src\pyppmd\py.typed -> build\lib.win-amd64-cpython-313\pyppmd
      creating build\lib.win-amd64-cpython-313\pyppmd\cffi
      copying src\pyppmd\cffi\cffi_ppmd.py -> build\lib.win-amd64-cpython-313\pyppmd\cffi
      running build_ext
      building 'pyppmd.c._ppmd' extension
      creating build\temp.win-amd64-cpython-313\Release\src\ext
      creating build\temp.win-amd64-cpython-313\Release\src\lib\buffer
      creating build\temp.win-amd64-cpython-313\Release\src\lib\ppmd
      "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -Isrc/lib/ppmd -Isrc/lib/buffer -IC:\Users\raven\Documents\GitHub\junkenv\.venv\include -IC:\Users\raven\AppData\Roaming\uv\python\cpython-3.13.2-windows-x86_64-none\include -IC:\Users\raven\AppData\Roaming\uv\python\cpython-3.13.2-windows-x86_64-none\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcsrc/ext/_ppmdmodule.c /Fobuild\temp.win-amd64-cpython-313\Release\src\ext\_ppmdmodule.obj /GF /Gy
      _ppmdmodule.c
      src/ext/_ppmdmodule.c(856): error C2059: syntax error: '}'
      src/ext/_ppmdmodule.c(1581): error C2059: syntax error: '}'
      error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyppmd
Successfully built inflate64
Failed to build pyppmd
ERROR: Failed to build installable wheels for some pyproject.toml based projects (pyppmd)

Expected behavior
Publish pyppmd and inflate64 wheels so py7zr installation works on 3.13.

Environment (please complete the following information):

  • OS: Windows 11
  • Python 3.13
  • py7zr version: 0.22.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions