zqfang / GSEApy

Gene Set Enrichment Analysis in Python
http://gseapy.rtfd.io/
BSD 3-Clause "New" or "Revised" License
562 stars 117 forks source link

RUST compiler? #163

Open michaelmather15 opened 2 years ago

michaelmather15 commented 2 years ago

Setup

I am reporting a problem with GSEApy version, Python version, and operating system as follows:

import sys; print(sys.version)
import platform; print(platform.python_implementation()); print(platform.platform())
import gseapy; print(gseapy.__version__)

python=v3.10.5 3.8.8 | packaged by conda-forge | (default, Feb 20 2021, 16:22:27) [GCC 9.3.0] CPython Linux-4.15.0-112-generic-x86_64-with-glibc2.10

Expected behaviour

Installs gseapy

Actual behaviour

Simply running: !pip install gseapy In Jupyer (python kernal), leads to:

Collecting gseapy Using cached gseapy-0.12.0.tar.gz (2.3 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting bioservices Using cached bioservices-1.10.1-py3-none-any.whl Requirement already satisfied: matplotlib in /opt/conda/lib/python3.8/site-packages (from gseapy) (3.3.4) Requirement already satisfied: requests in /opt/conda/lib/python3.8/site-packages (from gseapy) (2.25.1) Requirement already satisfied: joblib in /opt/conda/lib/python3.8/site-packages (from gseapy) (1.0.1) Requirement already satisfied: numpy>=1.13.0 in /opt/conda/lib/python3.8/site-packages (from gseapy) (1.20.1) Requirement already satisfied: pandas in /opt/conda/lib/python3.8/site-packages (from gseapy) (1.2.3) Requirement already satisfied: scipy in /opt/conda/lib/python3.8/site-packages (from gseapy) (1.6.1) Collecting lxml Using cached lxml-4.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (6.9 MB) Collecting beautifulsoup4 Using cached beautifulsoup4-4.11.1-py3-none-any.whl (128 kB) Collecting suds-community Using cached suds_community-1.1.2-py3-none-any.whl (144 kB) Collecting easydev>=0.9.36 Using cached easydev-0.12.0-py3-none-any.whl Collecting grequests Using cached grequests-0.6.0-py3-none-any.whl (5.2 kB) Collecting requests-cache Using cached requests_cache-0.9.5-py3-none-any.whl (47 kB) Collecting wrapt Using cached wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (81 kB) Collecting appdirs Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Collecting colorlog Using cached colorlog-6.6.0-py2.py3-none-any.whl (11 kB) Collecting xmltodict Using cached xmltodict-0.13.0-py2.py3-none-any.whl (10.0 kB) Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.8/site-packages (from matplotlib->gseapy) (1.3.1) Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.8/site-packages (from matplotlib->gseapy) (8.1.2) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /opt/conda/lib/python3.8/site-packages (from matplotlib->gseapy) (2.4.7) Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.8/site-packages (from matplotlib->gseapy) (2.8.1) Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.8/site-packages (from matplotlib->gseapy) (0.10.0) Requirement already satisfied: pytz>=2017.3 in /opt/conda/lib/python3.8/site-packages (from pandas->gseapy) (2021.1) Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.8/site-packages (from requests->gseapy) (2.10) Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.8/site-packages (from requests->gseapy) (2020.12.5) Requirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.8/site-packages (from requests->gseapy) (4.0.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.8/site-packages (from requests->gseapy) (1.26.3) Requirement already satisfied: six in /opt/conda/lib/python3.8/site-packages (from cycler>=0.10->matplotlib->gseapy) (1.15.0) Requirement already satisfied: pexpect in /opt/conda/lib/python3.8/site-packages (from easydev>=0.9.36->bioservices->gseapy) (4.8.0) Requirement already satisfied: colorama in /opt/conda/lib/python3.8/site-packages (from easydev>=0.9.36->bioservices->gseapy) (0.4.4) Collecting soupsieve>1.2 Using cached soupsieve-2.3.2.post1-py3-none-any.whl (37 kB) Collecting gevent Using cached gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.5 MB) Collecting cattrs<=22.2,>=1.8 Using cached cattrs-22.1.0-py3-none-any.whl (33 kB) Collecting attrs<22.0,>=21.2 Using cached attrs-21.4.0-py2.py3-none-any.whl (60 kB) Collecting url-normalize<2.0,>=1.4 Using cached url_normalize-1.4.3-py2.py3-none-any.whl (6.8 kB) Collecting exceptiongroup Using cached exceptiongroup-1.0.0rc8-py3-none-any.whl (11 kB) Collecting zope.interface Using cached zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl (259 kB) Collecting greenlet<2.0,>=1.1.0 Using cached greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (156 kB) Requirement already satisfied: setuptools in /opt/conda/lib/python3.8/site-packages (from gevent->grequests->bioservices->gseapy) (65.0.1) Collecting zope.event Using cached zope.event-4.5.0-py2.py3-none-any.whl (6.8 kB) Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.8/site-packages (from pexpect->easydev>=0.9.36->bioservices->gseapy) (0.7.0) Building wheels for collected packages: gseapy Building wheel for gseapy (pyproject.toml) ... error error: subprocess-exited-with-error

× Building wheel for gseapy (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [31 lines of output] running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-cpython-38 creating build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/gsea.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/plot.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/algorithm.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/parser.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/init.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/base.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/main.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/utils.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/biomart.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/stats.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/great.py -> build/lib.linux-x86_64-cpython-38/gseapy copying gseapy/enrichr.py -> build/lib.linux-x86_64-cpython-38/gseapy running build_ext running build_rust error: can't find Rust compiler

  If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

  To update pip, run:

      pip install --upgrade pip

  and then retry package installation.

  If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs/) is the recommended way to download and update the Rust compiler toolchain.
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for gseapy Failed to build gseapy ERROR: Could not build wheels for gseapy, which is required to install pyproject.toml-based projects

Steps to reproduce

As above. I've tried to install rust, but no success! Any help much appreciated.

zqfang commented 2 years ago

Yes. You need Rust compiler. See #161

install rust first

mamba install rust

or install mannually

michaelmather15 commented 2 years ago

Thank you for the quick reply. I did install rust, but that did not work. However, since following the link to #161 and configuring the path, it is now fine. Thanks for that!

zqfang commented 2 years ago

Now, for py >=3.7, you could use

conda install -c bioconda gseapy

So you don't need to install rust compiler by yourself.

michaelmather15 commented 2 years ago

Thank you!

RuiqiaoHe commented 2 years ago

I have met the same error. In my environment, pip install gseapy==0.10.8 would fix it.

zqfang commented 2 years ago

gseapy <= 0.10.8 consumes too much RAM. And the gseapy >=0.13.0 is 10x faster than gseapy <= 0.10.8. Please use the lastest version for best experiences.

Now, pypi has pre-build gseapy (>=0.14.0) for windows, linux, macos users. jus use

pip install gseapy
RuiqiaoHe commented 2 years ago

Thank you! This helps a lot. I have switched to gseapy-0.14.0.