Skip to content

Failing to install using pip on linux #650

Open
@PhilippKosarev

Description

@PhilippKosarev

OS: Fedora 42 Workstation
Python version: Python 3.13.3
Error: src/ext/_ppmdmodule.c:9:10: fatal error: Python.h: No such file or directory
Related: #640

Log

$ pip install py7zr
Defaulting to user installation because normal site-packages is not writeable
Collecting py7zr
  Using cached 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)
  Using cached pycryptodomex-3.22.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.4 kB)
Collecting pyzstd>=0.15.9 (from py7zr)
  Using cached pyzstd-0.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.5 kB)
Collecting pyppmd<1.2.0,>=1.1.0 (from py7zr)
  Using cached pyppmd-1.1.1.tar.gz (1.3 MB)
  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)
  Using cached pybcj-1.0.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.7 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)
  Using cached inflate64-1.0.1.tar.gz (896 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting brotli>=1.1.0 (from py7zr)
  Using cached Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.5 kB)
Requirement already satisfied: psutil in /home/philipp/.local/lib/python3.13/site-packages (from py7zr) (6.1.1)
Using cached py7zr-0.22.0-py3-none-any.whl (67 kB)
Using cached Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB)
Using cached multivolumefile-0.2.3-py3-none-any.whl (17 kB)
Using cached pybcj-1.0.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (51 kB)
Using cached pycryptodomex-3.22.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB)
Using cached pyzstd-0.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (415 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) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for inflate64 (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [75 lines of output]
      /tmp/pip-build-env-_e447p6c/overlay/lib/python3.13/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output
        warnings.warn("git archive did not support describe output")
      /tmp/pip-build-env-_e447p6c/overlay/lib/python3.13/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)")
      /tmp/pip-build-env-_e447p6c/overlay/lib/python3.13/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)
      /tmp/pip-build-env-_e447p6c/overlay/lib/python3.13/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()
      /tmp/pip-build-env-_e447p6c/overlay/lib/python3.13/site-packages/setuptools/dist.py:761: 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.linux-x86_64-cpython-313/inflate64
      copying src/inflate64/__init__.py -> build/lib.linux-x86_64-cpython-313/inflate64
      running egg_info
      writing src/inflate64.egg-info/PKG-INFO
      writing dependency_links to src/inflate64.egg-info/dependency_links.txt
      writing requirements to src/inflate64.egg-info/requires.txt
      writing top-level names to src/inflate64.egg-info/top_level.txt
      writing manifest file 'src/inflate64.egg-info/SOURCES.txt'
      ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any
      reading manifest file 'src/inflate64.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files found matching '.gitignore'
      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 'COPYING'
      writing manifest file 'src/inflate64.egg-info/SOURCES.txt'
      copying src/inflate64/py.typed -> build/lib.linux-x86_64-cpython-313/inflate64
      running build_ext
      building 'inflate64._inflate64' extension
      creating build/temp.linux-x86_64-cpython-313/src/ext
      creating build/temp.linux-x86_64-cpython-313/src/lib
      gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -O3 -fPIC -Isrc/lib -Isrc/ext -I/usr/include/python3.13 -c src/ext/_inflate64module.c -o build/temp.linux-x86_64-cpython-313/src/ext/_inflate64module.o
      src/ext/_inflate64module.c:8:10: fatal error: Python.h: No such file or directory
          8 | #include "Python.h"
            |          ^~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for inflate64
  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
  ╰─> [123 lines of output]
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/site-packages/setuptools_scm/git.py:310: UserWarning: git archive did not support describe output
        warnings.warn("git archive did not support describe output")
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/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)")
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/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)
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/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()
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/site-packages/setuptools/dist.py:761: 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.linux-x86_64-cpython-313/pyppmd
      copying src/pyppmd/__init__.py -> build/lib.linux-x86_64-cpython-313/pyppmd
      creating build/lib.linux-x86_64-cpython-313/pyppmd/c
      copying src/pyppmd/c/c_ppmd.py -> build/lib.linux-x86_64-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'
      /tmp/pip-build-env-2r6h_ru8/overlay/lib/python3.13/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.linux-x86_64-cpython-313/pyppmd
      creating build/lib.linux-x86_64-cpython-313/pyppmd/cffi
      copying src/pyppmd/cffi/cffi_ppmd.py -> build/lib.linux-x86_64-cpython-313/pyppmd/cffi
      running build_ext
      building 'pyppmd.c._ppmd' extension
      creating build/temp.linux-x86_64-cpython-313/src/ext
      creating build/temp.linux-x86_64-cpython-313/src/lib/buffer
      creating build/temp.linux-x86_64-cpython-313/src/lib/ppmd
      gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -O3 -fPIC -Isrc/lib/ppmd -Isrc/lib/buffer -I/usr/include/python3.13 -c src/ext/_ppmdmodule.c -o build/temp.linux-x86_64-cpython-313/src/ext/_ppmdmodule.o
      src/ext/_ppmdmodule.c:9:10: fatal error: Python.h: No such file or directory
          9 | #include "Python.h"
            |          ^~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyppmd
Failed to build inflate64 pyppmd
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (inflate64, pyppmd)

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