Bug#1053314: Depends: python3-h5py-mpi without python3-h5py

Nilesh Patra nilesh at riseup.net
Sun Oct 8 16:38:35 BST 2023


Hello,

On 10/8/23 17:22, Rafael Laboissière wrote:
> Ok, I tried to fix the building problem by including python3-h5py, alongside with python3-h5py-mpi, into Build-Depends, as suggested by Drew, but the xmds2 package FTBFS.
> 
> Here is a way to reproduce the problem without building the package:
> 
>    $ dpkg -l python3-h5py\*
>    Desired=Unknown/Install/Remove/Purge/Hold
>    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
>    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
>    ||/ Name                Version      Architecture Description
>    +++-===================-============-============-=======================================================
>    ii  python3-h5py        3.9.0-3      all          general-purpose Python interface to hdf5
>    ii  python3-h5py-mpi    3.9.0-3      amd64        general-purpose Python interface to hdf5 (Python 3 MPI)
>    un  python3-h5py-serial <none>       <none>       (no description available)
>    $ echo 'import h5py' | python3
>    Traceback (most recent call last):
>      File "<stdin>", line 1, in <module>
>      File "/usr/lib/python3/dist-packages/h5py/__init__.py", line 21, in <module>
>        from . import _debian_h5py_serial as _h5py
>    ImportError: cannot import name '_debian_h5py_serial' from partially initialized module 'h5py' (most likely due to a circular import) (/usr/lib/python3/dist-packages/h5py/__init__.py)
> 
> Is there a way to force h5py to import _debian_h5py_serial instead of _debian_h5py_mpi, via the generic h5py namespace?

Drew would probably answer that question better but from taking a brief look, it seems to be on expected lines.
This should work if you run it explicitly with mpi.

$ mpirun -n 1 python3 -c "import h5py" && echo "true"
true

or with setting the MPI var manually.

$ OMPI_COMM_WORLD_SIZE=1 python3 -c "import h5py" && echo "true"
true

If you want the _debian_h5py_serial interface then you need python3-h5py-serial and the B-D (and Depends) on h5py-mpi
should be dropped which would mean this package does not need the -mpi package.

Otherwise, a (unreliable) hack that you could do it that add a B-D on h5py *before* mpi and then -serial should also be installed (at least on my env).

If the code really needs h5py-mpi, then it should be running the build/tests with mpi enabled (via openmpi).
At least that's the impression I get from reading.

	https://sources.debian.org/src/h5py/3.9.0-3/debian/README.Debian/

This patch gets the package building for me with h5py-mpi+h5py, but not sure if it is the right thing to do -- please verify for yourself as package maintainer :)

--- a/xpdeint/XSILFile.py
+++ b/xpdeint/XSILFile.py
@@ -31,6 +31,9 @@
  
  numpy = None
  
+# Set env var to use h5py-mpi
+os.environ['OMPI_COMM_WORLD_SIZE'] = '1'
+
  def require_h5py():
    global h5py
    if not h5py:



More information about the debian-science-maintainers mailing list