TA-Lib / ta-lib-python

Python wrapper for TA-Lib (http://ta-lib.org/).
http://ta-lib.github.io/ta-lib-python
Other
9.56k stars 1.75k forks source link

Building wheel for ta-lib (pyproject.toml) did not run successfully. (Ta-lib C dependency is already installed) #644

Closed sainiankit closed 4 months ago

sainiankit commented 6 months ago

This docker file used to build fine before March 2024, Has suddenly started failing with the following error:

Dockerfile:

FROM python:3.9-slim

WORKDIR /app

COPY . .

RUN apt-get update \
    && apt-get install gcc -y \
    && apt-get install make -y \
    && apt-get install git -y \
    && apt-get install curl -y \
    && apt-get install python3-dev -y \
    && apt-get clean

RUN curl -SLO http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz && \
    tar -xvzf ta-lib-0.4.0-src.tar.gz && \
    cd ./ta-lib/ && \
    ./configure --prefix=/usr && \
    make && \
    make install

RUN rm -R ta-lib-0.4.0-src.tar.gz ta-lib

RUN pip install pipenv

ENV LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH}
ENV C_INCLUDE_PATH=/usr/include:${C_INCLUDE_PATH}

RUN pipenv install --system --dev --ignore-pipfile

Error Encountered:

24.51 [pipenv.exceptions.InstallError]:   Building wheel for ta-lib (pyproject.toml): started
24.51 [pipenv.exceptions.InstallError]:   Building wheel for ta-lib (pyproject.toml): finished with status 'error'
24.51 [pipenv.exceptions.InstallError]: Successfully built kappa placebo
24.51 [pipenv.exceptions.InstallError]: Failed to build ta-lib
24.51 [pipenv.exceptions.InstallError]: error: subprocess-exited-with-error
24.51 [pipenv.exceptions.InstallError]:   
24.51 [pipenv.exceptions.InstallError]:   × Building wheel for ta-lib (pyproject.toml) did not run successfully.
24.51 [pipenv.exceptions.InstallError]:   │ exit code: 1
24.51 [pipenv.exceptions.InstallError]:   ╰─> [90 lines of output]
24.51 [pipenv.exceptions.InstallError]:       running bdist_wheel
24.51 [pipenv.exceptions.InstallError]:       running build
24.51 [pipenv.exceptions.InstallError]:       running build_py
24.51 [pipenv.exceptions.InstallError]:       creating build
24.51 [pipenv.exceptions.InstallError]:       creating build/lib.linux-x86_64-cpython-39
24.51 [pipenv.exceptions.InstallError]:       creating build/lib.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       copying talib/stream.py -> build/lib.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       copying talib/abstract.py -> build/lib.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       copying talib/__init__.py -> build/lib.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       copying talib/deprecated.py -> build/lib.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       warning: build_py: byte-compiling is disabled, skipping.
24.51 [pipenv.exceptions.InstallError]:       
24.51 [pipenv.exceptions.InstallError]:       running build_ext
24.51 [pipenv.exceptions.InstallError]:       building 'talib._ta_lib' extension
24.51 [pipenv.exceptions.InstallError]:       creating build/temp.linux-x86_64-cpython-39
24.51 [pipenv.exceptions.InstallError]:       creating build/temp.linux-x86_64-cpython-39/talib
24.51 [pipenv.exceptions.InstallError]:       gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/include -I/usr/local/include -I/opt/include -I/opt/local/include -I/opt/homebrew/include -I/opt/homebrew/opt/ta-lib/include -I/tmp/pip-build-env-o6lcnnq2/normal/lib/python3.9/site-packages/numpy/_core/include -I/usr/local/include/python3.9 -c talib/_ta_lib.c -o build/temp.linux-x86_64-cpython-39/talib/_ta_lib.o
24.51 [pipenv.exceptions.InstallError]:       In file included from /tmp/pip-build-env-o6lcnnq2/normal/lib/python3.9/site-packages/numpy/_core/include/numpy/ndarraytypes.h:1909,
24.51 [pipenv.exceptions.InstallError]:                        from /tmp/pip-build-env-o6lcnnq2/normal/lib/python3.9/site-packages/numpy/_core/include/numpy/ndarrayobject.h:12,
24.51 [pipenv.exceptions.InstallError]:                        from /tmp/pip-build-env-o6lcnnq2/normal/lib/python3.9/site-packages/numpy/_core/include/numpy/arrayobject.h:5,
24.51 [pipenv.exceptions.InstallError]:                        from talib/_ta_lib.c:1092:
24.51 [pipenv.exceptions.InstallError]:       /tmp/pip-build-env-o6lcnnq2/normal/lib/python3.9/site-packages/numpy/_core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
24.51 [pipenv.exceptions.InstallError]:          17 | #warning "Using deprecated NumPy API, disable it with " \
24.51 [pipenv.exceptions.InstallError]:             |  ^~~~~~~
24.51 [pipenv.exceptions.InstallError]:       In file included from /usr/local/include/python3.9/pytime.h:6,
24.51 [pipenv.exceptions.InstallError]:                        from /usr/local/include/python3.9/Python.h:81,
24.51 [pipenv.exceptions.InstallError]:                        from talib/_ta_lib.c:16:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_f_5numpy_PyDataType_SHAPE’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:10093:39: error: ‘PyArray_Descr’ {aka ‘struct _PyArray_Descr’} has no member named ‘subarray’
24.51 [pipenv.exceptions.InstallError]:       10093 |     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
24.51 [pipenv.exceptions.InstallError]:             |                                       ^~
24.51 [pipenv.exceptions.InstallError]:       /usr/local/include/python3.9/object.h:112:41: note: in definition of macro ‘_PyObject_CAST’
24.51 [pipenv.exceptions.InstallError]:         112 | #define _PyObject_CAST(op) ((PyObject*)(op))
24.51 [pipenv.exceptions.InstallError]:             |                                         ^~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:1527:27: note: in expansion of macro ‘Py_INCREF’
24.51 [pipenv.exceptions.InstallError]:        1527 |   #define __Pyx_INCREF(r) Py_INCREF(r)
24.51 [pipenv.exceptions.InstallError]:             |                           ^~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:10093:5: note: in expansion of macro ‘__Pyx_INCREF’
24.51 [pipenv.exceptions.InstallError]:       10093 |     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
24.51 [pipenv.exceptions.InstallError]:             |     ^~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:10094:36: error: ‘PyArray_Descr’ {aka ‘struct _PyArray_Descr’} has no member named ‘subarray’
24.51 [pipenv.exceptions.InstallError]:       10094 |     __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
24.51 [pipenv.exceptions.InstallError]:             |                                    ^~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_pf_5talib_7_ta_lib_348_ta_getFuncInfo’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:51556:48: warning: passing argument 2 of ‘TA_GetFuncInfo’ from incompatible pointer type [-Wincompatible-pointer-types]
24.51 [pipenv.exceptions.InstallError]:       51556 |   __pyx_v_retCode = TA_GetFuncInfo(__pyx_t_1, (&__pyx_v_info));
24.51 [pipenv.exceptions.InstallError]:             |                                               ~^~~~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:             |                                                |
24.51 [pipenv.exceptions.InstallError]:             |                                                TA_FuncInfo **
24.51 [pipenv.exceptions.InstallError]:       In file included from talib/_ta_lib.c:1084:
24.51 [pipenv.exceptions.InstallError]:       /usr/include/ta-lib/ta_abstract.h:211:48: note: expected ‘const TA_FuncInfo **’ but argument is of type ‘TA_FuncInfo **’
24.51 [pipenv.exceptions.InstallError]:         211 |                            const TA_FuncInfo **funcInfo );
24.51 [pipenv.exceptions.InstallError]:             |                            ~~~~~~~~~~~~~~~~~~~~^~~~~~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_pf_5talib_7_ta_lib_350_ta_getInputParameterInfo’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:51832:71: warning: passing argument 3 of ‘TA_GetInputParameterInfo’ from incompatible pointer type [-Wincompatible-pointer-types]
24.51 [pipenv.exceptions.InstallError]:       51832 |   __pyx_v_retCode = TA_GetInputParameterInfo(__pyx_t_1, __pyx_v_idx, (&__pyx_v_info));
24.51 [pipenv.exceptions.InstallError]:             |                                                                      ~^~~~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:             |                                                                       |
24.51 [pipenv.exceptions.InstallError]:             |                                                                       TA_InputParameterInfo **
24.51 [pipenv.exceptions.InstallError]:       /usr/include/ta-lib/ta_abstract.h:442:68: note: expected ‘const TA_InputParameterInfo **’ but argument is of type ‘TA_InputParameterInfo **’
24.51 [pipenv.exceptions.InstallError]:         442 |                                      const TA_InputParameterInfo **info );
24.51 [pipenv.exceptions.InstallError]:             |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_pf_5talib_7_ta_lib_352_ta_getOptInputParameterInfo’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:52084:74: warning: passing argument 3 of ‘TA_GetOptInputParameterInfo’ from incompatible pointer type [-Wincompatible-pointer-types]
24.51 [pipenv.exceptions.InstallError]:       52084 |   __pyx_v_retCode = TA_GetOptInputParameterInfo(__pyx_t_1, __pyx_v_idx, (&__pyx_v_info));
24.51 [pipenv.exceptions.InstallError]:             |                                                                         ~^~~~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:             |                                                                          |
24.51 [pipenv.exceptions.InstallError]:             |                                                                          TA_OptInputParameterInfo **
24.51 [pipenv.exceptions.InstallError]:       /usr/include/ta-lib/ta_abstract.h:446:74: note: expected ‘const TA_OptInputParameterInfo **’ but argument is of type ‘TA_OptInputParameterInfo **’
24.51 [pipenv.exceptions.InstallError]:         446 |                                         const TA_OptInputParameterInfo **info );
24.51 [pipenv.exceptions.InstallError]:             |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_pf_5talib_7_ta_lib_354_ta_getOutputParameterInfo’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:52374:72: warning: passing argument 3 of ‘TA_GetOutputParameterInfo’ from incompatible pointer type [-Wincompatible-pointer-types]
24.51 [pipenv.exceptions.InstallError]:       52374 |   __pyx_v_retCode = TA_GetOutputParameterInfo(__pyx_t_1, __pyx_v_idx, (&__pyx_v_info));
24.51 [pipenv.exceptions.InstallError]:             |                                                                       ~^~~~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:             |                                                                        |
24.51 [pipenv.exceptions.InstallError]:             |                                                                        TA_OutputParameterInfo **
24.51 [pipenv.exceptions.InstallError]:       /usr/include/ta-lib/ta_abstract.h:450:70: note: expected ‘const TA_OutputParameterInfo **’ but argument is of type ‘TA_OutputParameterInfo **’
24.51 [pipenv.exceptions.InstallError]:         450 |                                       const TA_OutputParameterInfo **info );
24.51 [pipenv.exceptions.InstallError]:             |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c: In function ‘__pyx_f_5talib_7_ta_lib___ta_getFuncHandle’:
24.51 [pipenv.exceptions.InstallError]:       talib/_ta_lib.c:53011:126: warning: passing argument 2 of ‘TA_GetFuncHandle’ from incompatible pointer type [-Wincompatible-pointer-types]
24.51 [pipenv.exceptions.InstallError]:       53011 |   __pyx_t_1 = __pyx_f_5talib_7_ta_lib__ta_check_success(__pyx_n_s_TA_GetFuncHandle, TA_GetFuncHandle(__pyx_v_function_name, (&__pyx_v_handle)), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 772, __pyx_L1_error)
24.51 [pipenv.exceptions.InstallError]:             |                                                                                                                             ~^~~~~~~~~~~~~~~~
24.51 [pipenv.exceptions.InstallError]:             |                                                                                                                              |
24.51 [pipenv.exceptions.InstallError]:             |                                                                                                                              TA_FuncHandle ** {aka unsigned int **}
24.51 [pipenv.exceptions.InstallError]:       /usr/include/ta-lib/ta_abstract.h:155:52: note: expected ‘const TA_FuncHandle **’ {aka ‘const unsigned int **’} but argument is of type ‘TA_FuncHandle **’ {aka ‘unsigned int **’}
24.51 [pipenv.exceptions.InstallError]:         155 |                              const TA_FuncHandle **handle );
24.51 [pipenv.exceptions.InstallError]:             |                              ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
24.51 [pipenv.exceptions.InstallError]:       error: command '/usr/bin/gcc' failed with exit code 1
24.51 [pipenv.exceptions.InstallError]:       [end of output]
24.51 [pipenv.exceptions.InstallError]:   
24.51 [pipenv.exceptions.InstallError]:   note: This error originates from a subprocess, and is likely not a problem with pip.
24.51 [pipenv.exceptions.InstallError]:   ERROR: Failed building wheel for ta-lib
24.51 [pipenv.exceptions.InstallError]: ERROR: Could not build wheels for ta-lib, which is required to install pyproject.toml-based projects
24.51 ERROR: Couldn't install package: {}
24.51  Package installation failed...
24.52 /usr/local/lib/python3.9/subprocess.py:1052: ResourceWarning: subprocess 10 is still running
24.52   _warn("subprocess %s is still running" % self.pid,
24.52 ResourceWarning: Enable tracemalloc to get the object allocation traceback
24.52 sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name=8 encoding='utf-8'>
24.52 ResourceWarning: Enable tracemalloc to get the object allocation traceback
24.52 sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name=11 encoding='utf-8'>
24.52 ResourceWarning: Enable tracemalloc to get the object allocation traceback
------
dockerfile:39
--------------------
  37 |     ENV C_INCLUDE_PATH=/usr/include:${C_INCLUDE_PATH}
  38 |     
  39 | >>> RUN pipenv install --system --dev --ignore-pipfile
  40 |     
  41 |     CMD [ "cd", "/app" ]
--------------------
ERROR: failed to solve: process "/bin/sh -c pipenv install --system --dev --ignore-pipfile" did not complete successfully: exit code: 1

Queries:

Pipfile Used:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
black = "==21.7b0"
pytest = "*"

[packages]
ta-lib = "==0.4.28"
install = "*"
python-dotenv = "*"
markupsafe = "==2.1.3"
pandas = "*"
numpy = "*"

[requires]
python_version = "3.9.7"

[pipenv]
allow_prereleases = true
teo3n commented 5 months ago

This doesn't seem to be docker related, since the same issue happens when trying to install normally on Fedora 40, TA-lib installed and built from source (version 0.4.0) and with python3.12. Did you end up figuring out any solutions to this?

mrjbq7 commented 5 months ago

I can’t tell from that log what the error is? It looks almost like an out of memory error which you see when there is 1GB small instances involved. On Apr 30, 2024, at 11:06 PM, Teo Niemirepo @.***> wrote: This doesn't seem to be docker related, since the same issue happens when trying to install normally on Fedora 40, TA-lib installed and built from source (version 0.4.0) and with python3.12. Did you end up figuring out any solutions to this?

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

briancappello commented 4 months ago

It seems maybe PEP517 related? I am able to reproduce when trying to use poetry to install version 0.4.28. Switching to using a git dependency works, as does pulling the latest source and installing that folder in editable mode. Could be it's already fixed in main.

mrjbq7 commented 4 months ago

Hi @briancappello, I released 0.4.29 from git master, would you mind checking if that works as a pypi dependency?

Thanks!

briancappello commented 4 months ago

Awesome, thanks @mrjbq7 ! It works for me now with poetry on 3.10 and 3.12, both with 64bit x86 and M2 Linux.

mrjbq7 commented 4 months ago

Awesome!