dieterich-lab / circtools

circtools: a modular, python-based framework for circRNA-related tools that unifies several functionalities in a single, command line driven software.
http://circ.tools
GNU General Public License v3.0
25 stars 20 forks source link

circtools install failes with Python 3.10.6 #94

Closed HaraldWilhelmi closed 2 years ago

HaraldWilhelmi commented 2 years ago

Describe the bug

The installation of circtools fails, if Python 3.10.6 is used.

To Reproduce

Install manually Python 3.10.6 and and make sure that it is used:

python3 --version

During installation of circtools the command

python3 setup.py install --verbose

fails. See attached log file for the complete compiler errors:

As far as I understand it it, this are the important passages:

      numpy/core/src/multiarray/scalartypes.c.src:3214:27: error: incompatible type for argument 1 of ‘_Py_HashDouble’
       3214 |     return _Py_HashDouble((double) ((Py@name@ScalarObject *)obj)->obval);
            |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            |                           |
            |                           double
      In file included from /biosw/python3/3.10.6_deb11/include/python3.10/Python.h:77,
                       from numpy/core/src/multiarray/scalartypes.c.src:3:
      /biosw/python3/3.10.6_deb11/include/python3.10/pyhash.h:10:38: note: expected ‘PyObject *’ {aka ‘struct _object *’} but argument is of type ‘double’
...
Installing collected packages: pybedtools, ppft, numpy, dill, multiprocess, pathos, FUCHS
  Attempting uninstall: numpy
    Found existing installation: numpy 1.23.2
    Uninstalling numpy-1.23.2:
      Successfully uninstalled numpy-1.23.2
  Running setup.py install for numpy: started
  Running setup.py install for numpy: finished with status 'error'

Environment

Wild Guess

Please note that the error messages look like the ones described here:

My best guess is, that FUCHS implicitly depends on a version of numpy effected by this bug. So FUCHS and with it circtools is presently not compatible with Python 3.10.

tjakobi commented 2 years ago

FUCHS does not specify a specific numpy version, neither does DCC; circtools only specifies > 1.14 in the requirements. As such, there is no direct dependency on a specific version of numpy.

However, the install_external.sh script still pulls branches with have been merged and are stale. This yields to numpy 1.16 being pulled in.

Collecting numpy<1.17.0
  Using cached numpy-1.16.6.zip (5.1 MB)