inducer / pycuda

CUDA integration for Python, plus shiny features
http://mathema.tician.de/software/pycuda
Other
1.85k stars 288 forks source link

Pip installation failing with Python 3.7 #408

Closed bmerry closed 1 year ago

bmerry commented 1 year ago

Describe the bug When running pip install pycuda on a fresh Python 3.7 virtual environment, the build fails (see log lower down). It works on Python 3.8.

To Reproduce Steps to reproduce the behavior:

  1. Create a new Python 3.7 virtual environment with the latest packaging packages (I ran pyenv virtualenv --download -p /usr/bin/python3.7 env-3.7)
  2. Switch to this virtual environment.
  3. Run pip install pycuda
  4. See error (there is a lot more compiler output, but this looks like the start of actual errors):

      src/wrapper/wrap_cudadrv.cpp: In function ‘void init_module__driver()’:
      src/wrapper/wrap_cudadrv.cpp:1034:26: error: ‘CU_TARGET_COMPUTE_20’ was not declared in this scope; did you mean ‘CU_TARGET_COMPUTE_90’?
       1034 |     .value("COMPUTE_20", CU_TARGET_COMPUTE_20)
            |                          ^~~~~~~~~~~~~~~~~~~~
            |                          CU_TARGET_COMPUTE_90
      src/wrapper/wrap_cudadrv.cpp:1037:26: error: ‘CU_TARGET_COMPUTE_21’ was not declared in this scope; did you mean ‘CU_TARGET_COMPUTE_61’?
       1037 |     .value("COMPUTE_21", CU_TARGET_COMPUTE_21)
            |                          ^~~~~~~~~~~~~~~~~~~~
            |                          CU_TARGET_COMPUTE_61
      /tmp/pip-build-env-b1oox89y/overlay/lib/python3.7/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'pycuda.cuda' is absent from the `packages` configuration.
      !!
    
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'pycuda.cuda' 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 'pycuda.cuda' 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 'pycuda.cuda' to be distributed and are
              already explicitly excluding 'pycuda.cuda' 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)
      error: command '/usr/bin/x86_64-linux-gnu-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 pycuda
    Failed to build pycuda
    ERROR: Could not build wheels for pycuda, which is required to install pyproject.toml-based projects

Expected behavior Successful install.

Environment (please complete the following information):

inducer commented 1 year ago

We're no longer supporting versions of Python before 3.8:

https://github.com/inducer/pycuda/blob/ad519613d8930dff319bf30c78c0fbf8bd9d424c/setup.py#L223

bmerry commented 1 year ago

Ah, that would explain it. Perhaps you could document that though? The changelogs at https://documen.tician.de/pycuda/misc.html stop at 2020, and the installation guide at https://wiki.tiker.net/PyCuda/Installation/Linux/ says the minimum version is Python 2.4.

inducer commented 1 year ago

https://pypi.org/project/pycuda/ shows this info.