inducer / pyopencl

OpenCL integration for Python, plus shiny features
http://mathema.tician.de/software/pyopencl
Other
1.04k stars 237 forks source link

`pip install .` causes messy directory layout #753

Closed matthiasdiener closed 4 weeks ago

matthiasdiener commented 1 month ago

Describe the bug pip install . seems to write pyopencl files into the main environment:

$ pip install .
[...]
$ pip uninstall pyopencl
Found existing installation: pyopencl 2024.2.2
Uninstalling pyopencl-2024.2.2:
  Would remove:
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/CITATION.cff
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/CMakeLists.txt
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/LICENSE
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/Makefile.in
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/README.rst
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/README_SETUP.txt
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/aksetup_helper.py
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/configure.py
    /Users/mdiener/Work/emirge/miniforge3/envs/ceesd/contrib/cldis.py
[...]

To Reproduce Steps to reproduce the behavior:

  1. $ cd pyopencl
  2. $ pip install .
  3. $ pip uninstall pyopencl

Expected behavior Keep the files in the pkgs/pyopencl-* subdirectory.

Environment (please complete the following information):

inducer commented 1 month ago

Ugh. I can reproduce this, too. I'm not sure what's causing it.

https://github.com/wjakob/nanobind_example/commit/4df3213af19f658ef5d7efc9839f4f9fe5a30749

is the last commit of nanobind-example before the switch to scikit-build-core. It doesn't seem to have this problem. Neither does islpy.

inducer commented 1 month ago

Migrating to scikit-build-core might also fix this, but I think it'd be kind of a big lift.

cgohlke commented 1 month ago

Could be related to this: the current wheels on PyPI contain many superfluous files from the source distribution that get installed into the Python root folder (at least on Windows). Quite messy.

pyopencl-2024.2.2.data\data\aksetup_helper.py
pyopencl-2024.2.2.data\data\CITATION.cff
pyopencl-2024.2.2.data\data\CMakeLists.txt
pyopencl-2024.2.2.data\data\configure.py
pyopencl-2024.2.2.data\data\LICENSE
pyopencl-2024.2.2.data\data\Makefile.in
pyopencl-2024.2.2.data\data\pytest.ini
pyopencl-2024.2.2.data\data\README.rst
pyopencl-2024.2.2.data\data\README_SETUP.txt
pyopencl-2024.2.2.data\data\contrib\cldis.py
pyopencl-2024.2.2.data\data\contrib\pyopencl.vim
pyopencl-2024.2.2.data\data\contrib\fortran-to-opencl\README
pyopencl-2024.2.2.data\data\contrib\fortran-to-opencl\translate.py
pyopencl-2024.2.2.data\data\doc\algorithm.rst
pyopencl-2024.2.2.data\data\doc\array.rst
pyopencl-2024.2.2.data\data\doc\conf.py
pyopencl-2024.2.2.data\data\doc\howto.rst
pyopencl-2024.2.2.data\data\doc\index.rst
pyopencl-2024.2.2.data\data\doc\make_constants.py
pyopencl-2024.2.2.data\data\doc\Makefile
pyopencl-2024.2.2.data\data\doc\misc.rst
pyopencl-2024.2.2.data\data\doc\runtime.rst
pyopencl-2024.2.2.data\data\doc\runtime_const.rst
pyopencl-2024.2.2.data\data\doc\runtime_gl.rst
pyopencl-2024.2.2.data\data\doc\runtime_memory.rst
pyopencl-2024.2.2.data\data\doc\runtime_platform.rst
pyopencl-2024.2.2.data\data\doc\runtime_program.rst
pyopencl-2024.2.2.data\data\doc\runtime_queue.rst
pyopencl-2024.2.2.data\data\doc\subst.rst
pyopencl-2024.2.2.data\data\doc\tools.rst
pyopencl-2024.2.2.data\data\doc\types.rst
pyopencl-2024.2.2.data\data\examples\black-hole-accretion.py
pyopencl-2024.2.2.data\data\examples\demo.py
pyopencl-2024.2.2.data\data\examples\demo_array.py
pyopencl-2024.2.2.data\data\examples\demo_array_svm.py
pyopencl-2024.2.2.data\data\examples\demo_elementwise.py
pyopencl-2024.2.2.data\data\examples\demo_elementwise_complex.py
pyopencl-2024.2.2.data\data\examples\demo_mandelbrot.py
pyopencl-2024.2.2.data\data\examples\demo_meta_codepy.py
pyopencl-2024.2.2.data\data\examples\demo_meta_template.py
pyopencl-2024.2.2.data\data\examples\demo-struct-reduce.py
pyopencl-2024.2.2.data\data\examples\dump-performance.py
pyopencl-2024.2.2.data\data\examples\dump-properties.py
pyopencl-2024.2.2.data\data\examples\gl_interop_demo.py
pyopencl-2024.2.2.data\data\examples\gl_particle_animation.py
pyopencl-2024.2.2.data\data\examples\ipython-demo.ipynb
pyopencl-2024.2.2.data\data\examples\median-filter.py
pyopencl-2024.2.2.data\data\examples\narray.py
pyopencl-2024.2.2.data\data\examples\n-body.py
pyopencl-2024.2.2.data\data\examples\noisyImage.jpg
pyopencl-2024.2.2.data\data\examples\pi-monte-carlo.py
pyopencl-2024.2.2.data\data\examples\svm.py
pyopencl-2024.2.2.data\data\examples\transpose.py
pyopencl-2024.2.2.data\data\src\bitlog.cpp
pyopencl-2024.2.2.data\data\src\bitlog.hpp
pyopencl-2024.2.2.data\data\src\clinfo_ext.h
pyopencl-2024.2.2.data\data\src\mempool.hpp
pyopencl-2024.2.2.data\data\src\pyopencl_ext.h
pyopencl-2024.2.2.data\data\src\tools.hpp
pyopencl-2024.2.2.data\data\src\wrap_cl.cpp
pyopencl-2024.2.2.data\data\src\wrap_cl.hpp
pyopencl-2024.2.2.data\data\src\wrap_cl_part_1.cpp
pyopencl-2024.2.2.data\data\src\wrap_cl_part_2.cpp
pyopencl-2024.2.2.data\data\src\wrap_constants.cpp
pyopencl-2024.2.2.data\data\src\wrap_helpers.hpp
pyopencl-2024.2.2.data\data\src\wrap_mempool.cpp
pyopencl-2024.2.2.data\data\test\add-vectors-32.spv
pyopencl-2024.2.2.data\data\test\add-vectors-64.spv
pyopencl-2024.2.2.data\data\test\empty-header.h
pyopencl-2024.2.2.data\data\test\test_algorithm.py
pyopencl-2024.2.2.data\data\test\test_array.py
pyopencl-2024.2.2.data\data\test\test_arrays_in_structs.py
pyopencl-2024.2.2.data\data\test\test_clmath.py
pyopencl-2024.2.2.data\data\test\test_clrandom.py
pyopencl-2024.2.2.data\data\test\test_enqueue_copy.py
pyopencl-2024.2.2.data\data\test\test_wrapper.py