Skip to content

pip install ScreenPro2 installs no runtime dependencies; environment.yml pins also fail to resolve #112

Closed

Description

@mschroed

Description

Installing ScreenPro2 from PyPI as the README describes (pip install ScreenPro2) produces a package that can't be imported. pyproject.toml declares no runtime dependencies other than Python >=3.9:

Steps to reproduce

conda create -n sp2 python
conda activate sp2
pip install ScreenPro2
screenpro --help

Observed

ModuleNotFoundError: No module named 'pandas'

Related problems with environment.yml

Installing the dependencies listed in environment.yml doesn't fully solve it either:

  1. Unbounded Python version. With no Python version specified, conda picks the newest Python (3.14 here). biobear has no wheels for it, and the pandas<2.0 / matplotlib<3.7 pins can't be satisfied. The range python>=3.9,<=3.12 might also be too loose, since pandas 1.5.3 has no official build for Python 3.12. Python 3.11 works.
  2. Unpinned pydeseq2 conflicts with pandas<2.0. The current pydeseq2 (0.5.4) requires pandas>=2.2, so pip install pydeseq2 silently upgrades pandas 1.5.3 → 3.0.6, numpy 1.26 → 2.4.6 and matplotlib 3.6 → 3.11. Pinning pydeseq2<0.5 (0.4.12) resolves it.
  3. libstdc++ ABI clash from mixing conda and pip. Because the yml installs some packages via conda and others via pip, the pip wheels (pyarrow/biobear/polars) load the system libstdc++ first, and conda-forge scipy then fails:
   ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.15' not found
   (required by .../scipy/spatial/_distance_pybind.cpython-311-x86_64-linux-gnu.so)

Workaround: conda env config vars set LD_PRELOAD=$CONDA_PREFIX/lib/libstdc++.so.6

Working configuration

ScreenPro2 0.7.0 runs (screenpro --help works) with:

  • Python 3.11 (miniforge, conda-forge + bioconda)
  • pandas 1.5.3, numpy 1.26.4, matplotlib 3.6.3, pydeseq2 0.4.12
  • biobear 0.23.7, pyarrow 25.0.1, anndata 0.11.4, scipy 1.17.1
  • LD_PRELOAD workaround above

Suggested fixes

  • Declare runtime dependencies (with the correct version bounds) in [tool.poetry.dependencies], so pip install ScreenPro2 works as the README says.
  • In environment.yml, pin python=3.11 (or >=3.9,<3.12) and pydeseq2<0.5, or update the code for pandas ≥2.

Environment

  • OS: Linux x86_64 (Ubuntu 22.04.5 LTS)
  • Conda: miniforge (conda 23.1.0)
  • ScreenPro2: 0.7.0 (PyPI)

Activity

  1. albertlieyingadrian commented on Nov 12, 2026

    @albertlieyingadrian
    Contributor

    Thanks for the detailed write-up. I reproduced the missing dependencies on a clean Python 3.11 venv and opened a PR that declares them in pyproject.toml, using the pins you found.

  2. self-assigned this
    on Nov 13, 2026
  3. added a commit that references this issue on Nov 13, 2026
    2330fa0
  4. abearab commented on Nov 13, 2026

    @abearab
    Collaborator

    @mschroed @albertlieyingadrian thanks for the discussion and providing a solution #113 – please let me know if there is still any issue ... closed this issue for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions