Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
sainiankit opened this issue Apr 6, 2024 · 6 comments

Comments

@sainiankit
Copy link

sainiankit commented Apr 6, 2024

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:

  • What change could have broken the working dockerfile.
  • What can be done to fix this ?

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

@sainiankit sainiankit changed the title Building wheel for ta-lib (pyproject.toml) did not run successfully. (Ta-lib C is already installed) Building wheel for ta-lib (pyproject.toml) did not run successfully. (Ta-lib C dependency is already installed) Apr 6, 2024
@teo3n
Copy link

teo3n commented May 1, 2024

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
Copy link
Collaborator

mrjbq7 commented May 1, 2024 via email

@briancappello
Copy link
Contributor

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
Copy link
Collaborator

mrjbq7 commented May 20, 2024

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

Thanks!

@briancappello
Copy link
Contributor

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

@mrjbq7
Copy link
Collaborator

mrjbq7 commented May 23, 2024

Awesome!

@mrjbq7 mrjbq7 closed this as completed May 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants