SainsburyWellcomeCentre / aeon_mecha

Project Aeon's main library for interfacing with acquired data. Contains modules for raw data file io, data querying, data processing, data qc, database ingestion, and building computational data pipelines.
BSD 3-Clause "New" or "Revised" License
6 stars 6 forks source link

Installing from main branch using pip reports missing packages #375

Closed glopesdev closed 3 months ago

glopesdev commented 4 months ago

To reproduce

On a clean Python 3.12 install run:

pip install git+https://github.com/SainsburyWellcomeCentre/aeon_mecha.git

Then from the interpreter calling import aeon will report the following error trace:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\dev\python\aeon\.venv\Lib\site-packages\aeon\__init__.py", line 13, in <module>
    from aeon.io.api import load
ModuleNotFoundError: No module named 'aeon.io'

Possible causes

Looking into the contents of the aeon package inside the local site-packages folder reveals that indeed none of the submodules have been included. My suspicion is this relates to how the wheels are being built from the pyproject.toml file, specifically the way the packages to be included are declared:

https://github.com/SainsburyWellcomeCentre/aeon_mecha/blob/25cc4b724d0451bf1171a70791bc3a3ed7d8d698/pyproject.toml#L79

I believe that we may need some wildcards to correctly include all subfolders. In a different project I use the following declaration:

https://github.com/harp-tech/harp-python/blob/c90387efdbb4d762073201b763025dd49d5d3117/pyproject.toml#L57

[tool.setuptools.packages.find]
include = ["harp*"]

The wildcard * may be necessary to allow building the wheels with all sub modules.