pypa / build

A simple, correct Python build frontend
https://build.pypa.io
MIT License
745 stars 121 forks source link

build fails with a bogus missing dependencies list #504

Open yurivict opened 2 years ago

yurivict commented 2 years ago

I am trying to build a wheel with build for the scanpy project.

It prints this error message:

===>  Building for py39-scanpy-1.9.1
cd /disk-samsung/freebsd-ports/biology/py-scanpy/work/scanpy-1.9.1 && /usr/bin/env XDG_DATA_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work  XDG_CONFIG_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work  XDG_CACHE_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.cache  HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work PATH=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.bin:/home/yuri/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin PKG_CONFIG_LIBDIR=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig NO_PIE=yes MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe -fno-omit-frame-pointer  -fstack-protector-strong -fno-strict-aliasing "  CPP="cpp" CPPFLAGS="-fno-omit-frame-pointer"  LDFLAGS=" -fstack-protector-strong " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer  "  MANPREFIX="/usr/local" BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444" /usr/local/bin/python3.9 -m build --wheel --no-isolation --outdir /disk-samsung/freebsd-ports/biology/py-scanpy/work
* Getting dependencies for wheel...

ERROR Missing dependencies:
    anndata>=0.7.4
    matplotlib>=3.4
    kiwisolver>=1.0.1
    scikit-learn>=0.22
    threadpoolctl>=2.0.0
    umap-learn>=0.3.10
    pynndescent>=0.5 -> scikit-learn>=0.18 -> threadpoolctl>=2.0.0
    umap-learn>=0.3.10
    scikit-learn>=0.22 -> threadpoolctl>=2.0.0
    seaborn
    matplotlib>=2.2 -> kiwisolver>=1.0.1
*** Error code 1

Many dependencies that it lists are installed: py39-anndata-0.8.0 py39-matplotlib-3.4.3_3 py39-kiwisolver-1.4.3,1 py39-umap-learn-0.5.3 py39-seaborn-0.11.2

There is one real problem: threadpoolctl is missing.

But why does build complain about dependencies that are installed?

py39-build-0.8.0 FreeBSD 13.1

hseg commented 1 month ago

Ran into this problem as well, building https://github.com/john-hen/Flake8-pyproject on a system that brokenly had pycodestyle 2.11.1 and flake8 7.1.1 installed -- build complained that it couldn't find the pycodestyle 2.12.1 dep, and it took stepping through the code with pdb to discover the installed version was incorrect.

At the very least, a --verbose option listing, for each (transitive) dependency, who asked for it and what version was found, would've gone a long way towards easing this archeology.