• [long] entry points and package which doesn not provide egg info or dis

    From PICCA Frederic-Emmanuel@21:1/5 to All on Wed Sep 20 11:50:02 2023
    Hello,

    I am the maintainer of silx

    I have this problem with the gui application

    $ silx view
    Traceback (most recent call last):
    File "/usr/bin/silx", line 33, in <module>
    sys.exit(load_entry_point('silx==1.1.2', 'console_scripts', 'silx')())
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/silx/__main__.py", line 67, in main
    status = launcher.execute(sys.argv)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/silx/utils/launcher.py", line 294, in execute
    return command.execute(command_argv)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/silx/utils/launcher.py", line 128, in execute
    status = func(argv)
    ^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/silx/app/view/main.py", line 214, in main
    mainQt(options)
    File "/usr/lib/python3/dist-packages/silx/app/view/main.py", line 156, in mainQt
    import silx.gui.utils.matplotlib # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/silx/gui/utils/matplotlib.py", line 39, in <module>
    from pkg_resources import parse_version
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3328, in <module>
    @_call_aside
    ^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3303, in _call_aside
    f(*args, **kwargs)
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3341, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 631, in _build_master
    ws.require(__requires__)
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 969, in require
    needed = self.resolve(parse_requirements(requirements))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
    dist = self._resolve_dist(
    ^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 871, in _resolve_dist
    raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'h5py' distribution was not found and is required by 'hdf5plugin silx'

    So the entry point do not find the h5py package even if python3-h5py is installed via python3-h5py-serial

    I reported the issue to the h5py maintainer via this bug report.

    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051781

    This package is a bit special since it provide a serial implementation python3-h5py-serial and an MPI one via the
    python3-h5py-mpi. both packages are co-installable.

    In each of these packages there is an

    /usr/lib/python3/dist-packages/h5py._debian_h5py_serial-3.7.0.dist-info/METADATA
    /usr/lib/python3/dist-packages/h5py._debian_h5py_serial-3.7.0.dist-info/RECORD /usr/lib/python3/dist-packages/h5py._debian_h5py_serial-3.7.0.dist-info/WHEEL /usr/lib/python3/dist-packages/h5py._debian_h5py_serial-3.7.0.dist-info/top_level.txt

    and

    /usr/lib/python3/dist-packages/h5py._debian_h5py_mpi-3.7.0.dist-info/METADATA /usr/lib/python3/dist-packages/h5py._debian_h5py_mpi-3.7.0.dist-info/RECORD /usr/lib/python3/dist-packages/h5py._debian_h5py_mpi-3.7.0.dist-info/WHEEL /usr/lib/python3/dist-packages/h5py._debian_h5py_mpi-3.7.0.dist-info/top_level.txt

    On Debian the two versions are named h5py._debian_h5py_serial and h5py._debian_h5py_mpi

    This organisation is specific to Debian since upstream provide only one version of the h5py package.
    On Debian we are able to co-install and MPI and a serial version of this library linked
    to the serial or mpi version of the hdf5 library.

    the differences are

    $ diff /usr/lib/python3/dist-packages/h5py._debian_h5py_serial-3.7.0.dist-info/METADATA /usr/lib/python3/dist-packages/h5py._debian_h5py_mpi-3.7.0.dist-info/METADATA
    2c2
    < Name: h5py.-debian-h5py-serial
    ---
    Name: h5py.-debian-h5py-mpi
    30a31
    Requires-Dist: mpi4py (>=3.0.2)

    so the name and a dependecy to the mpi4py package.

    for the RECORD part the installed files are located in two different directory, so they are totally different.

    top_level.txt WHEEL are identical

    There is a generic python3-h5py which is used in the B-D of packages depending on h5py.
    It is almost empty but depends on one of the two implementations.

    $ dpkg -L python3-h5py
    /.
    /usr
    /usr/share
    /usr/share/doc
    /usr/share/doc/python3-h5py
    /usr/share/doc/python3-h5py/README.Debian /usr/share/doc/python3-h5py/README.rst /usr/share/doc/python3-h5py/changelog.Debian.gz /usr/share/doc/python3-h5py/copyright

    $ apt show python3-h5py
    Package: python3-h5py
    Version: 3.7.0-8
    Priority: optional
    Section: python
    Source: h5py
    Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
    Installed-Size: 22,5 kB
    Depends: python3-h5py-serial | python3-h5py-mpi

    This package does not provide