Errors installing TA-Lib in Debian Linux Dockerfile

72 views Asked by At

When installing TA-Lib in a Dockerfile which inherits from python:3.10.13-slim-bookworm I am using these Dockerfiles as examples however still am getting errors:

https://dev.to/lazypro/build-a-small-ta-lib-container-image-4ca1

https://github.com/deepnox-io/docker-python-ta-lib/blob/main/v0.4.17/python/3.8.1/alpine/3.11/Dockerfile

Example errors I am seeing:

Problem with the CMake installation, aborting build. CMake executable is cmake
CMake was unable to find a build program corresponding to "Ninja".

Unit test failures:
Could not build wheels for patchelf, which is required to install pyproject.toml-based projects
FAIL: set-interpreter-long.sh 
FAIL:  set-rpath.sh 
FAIL:  add-rpath.sh

How do I install TA-Lib into a Dockerfile?

1

There are 1 answers

0
user1689987 On BEST ANSWER

I didn't try installing anaconda and using conda to install TA-Lib but that might have been easier, as mentioned here: https://blog.quantinsti.com/install-ta-lib-python/

Instead here is my full Dockerfile. In particular I think it was the various pip and apt-get installs which allowed my TA-Lib make/install to succeed:

FROM python:3.10.13-slim-bookworm

WORKDIR /app

ENV PYTHON_TA_LIB_VERSION 0.4.17

RUN apt-get update && apt-get install -y \
    build-essential \
    curl \
    software-properties-common \
    git \
    && rm -rf /var/lib/apt/lists/*


RUN apt-get update && apt-get install -y gcc wget python3-dev musl-dev g++ make cmake autoconf ninja-build vim


COPY . .
RUN pip3 install --upgrade pip
RUN pip3 install setuptools numpy patchelf


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


ENV TA_LIBRARY_PATH="/usr/lib"
ENV TA_INCLUDE_PATH="/usr/include"

RUN pip3 install --global-option=build_ext --global-option="-L/usr/lib" TA-Lib
RUN pip3 install -r requirements.txt

ENV PATH="/usr/bin:$PATH"
ENV LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"
ENV PKG_CONFIG_PATH="/usr/lib/pkgconfig:$PKG_CONFIG_PATH"


ENTRYPOINT ["sleep", "infinity"]