Trouble Installing TA-Lib in Python 3.7

The documentation of Ta-lib package here is well clear:

https://github.com/mrjbq7/ta-lib

https://mrjbq7.github.io/ta-lib/

And as it was clearly mentionned! this python ta-lib library! Is a wrapper for the TaLib library at https://ta-lib.org/

This is a Python wrapper for TA-LIB based on Cython instead of SWIG

To know the ta-lib.org library is a library created in c lang! You can check here

And multiple binding and interfaces are made for different languages! Just as mentionned in the official website!

The python library is a binding for python that use cython! Which make it more efficient then SWIG!

Know that I'll insist on using pip! (it works all well and it's convenient)

For the installation to go well! You'll need to go in two steps! You need to install TaLib native library binaries first! Then install the python lib with pip (again with pip)! And this order is necessary! You can't go for installing the python binding before the first installation finish!

All that said!

Installation

Step 1: Installing Talib native binary

Installing the Ta-lib software (Or native library binary)! Is a must! And need to be done first!

Follow the instructions here:

https://github.com/mrjbq7/ta-lib#dependencies

The instructions are too clear and detailed!

(Linux users you need to execute the command with the right privelege (hince using sudo))

And last thing! You can check @Code_Worm answer in this thread here He explained many points highly well aboutt the instruction above !

I'll pin point too his hint:

Hint : It seems, by default, the setup.py reads actual library files from C:\ta-lib (in Windows) and /usr (in Linux). so if you move the downloaded zip file to another location and extract it there (for Windows) or set ./configure --prefix to any location other than /usr (for Linux), then you would have to set TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables to your desired locations.

Check the section bellow this hint!

You can check the trouble shooting section here

Step 2: Installing the python library using pip

Don't proceed with this step until the first step is successfully finished and done with!

Again the pip package and pip works well! And so no need to use some whl file from any other website and src! I'll show you how!

pip install TA-Lib

However here there is many things to say!

First you need to use python 3

So you may use pip3 instead of pip! If pip is resolving to the python2 version (which is common in linux installations)!

pip3 install TA-Lib

Now you may fall in this problem and error!

unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)
AttributeError: 'HTMLParser' object has no attribute 'unescape'

IF such is the case! That's a problem that can come with python 3.9! (if you are using 3.8 you may not encounter that at all)!

The solution and fix is simple! We have just to make an upgrade to some packages! You can follow the instructions from the answer here:

https://stackoverflow.com/a/65640477/7668448

After some trial and error I upgraded, pip, distlib and setuptools and it solved it. Not sure which of those is causing it. (On the last two I found issues 1 2 of other sites) It is caused by removing unescape from HTMLParser in python3.9, which seems to break setuptools.

pip3 install --upgrade setuptools

If it does not work, try also:

pip3 install --upgrade pip
pip3 install --upgrade distlib

That's it all! If the first step (step 1: Installing TaLib native binaries) is well done and finished! Then running pip3 install TA-Lib will works well this time!

For Linux users! If you run it with sudo! And it failed! Don't use sudo! You should not!

For linux users you may need to install python headers

sudo apt-get install python3-dev

You can try it only if it didn't works! In most linux distro! You'll be ok by default!

Last (Trouble shooting doc section)

If needed Check the trouble shooting section here


Here is what works for me...

Download TA_Lib-0.4.10-cp27-cp27m-win_amd64.whl from here And use command pip install TA_Lib-0.4.10-cp27-cp27m-win_amd64.whl

I was using Conda4 with python 3.6 64 bit version.

Another way also you can try

To install Ta-Lib with Python 3.6+, Windows 64 bit use this pip install -i https://pypi.anaconda.org/masdeseiscaracteres/simple ta-lib


The root cause of the error is probably because you haven't installed actual TA-Lib library which is written in C. Note that the python lib is just a wrapper on top of the actual library. So in order to have python wrapper successfully installed, you'll need to install its prerequisite (the actual TA-Lib).

See https://github.com/mrjbq7/ta-lib#dependencies for more details.

From above reference (for ease of access) :

Installing actual TA-Lib (prerequisite for python wrapper) :

Windows

  1. Download ta-lib-0.4.0-msvc.zip and unzip to C:\ta-lib

  2. Move the Unzipped Folder ta-lib to C:\

  3. Download and Install Visual Studio Community 2015 if already not installed (Remember to Select [Visual C++] Feature)

  4. open x64 Native Tools Command Prompt

  5. navigate to C:\ta-lib\c\make\cdr\win32\msvc

  6. type nmake (this command builds the library)

Linux

$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install

Mac OS X

$ brew install ta-lib

If you are using a M1 laptop and Homebrew, then you can set these before installing:

export TA_INCLUDE_PATH="$(brew --prefix ta-lib)/include"
export TA_LIBRARY_PATH="$(brew --prefix ta-lib)/lib"

Hint : It seems, by default, the setup.py reads actual library files from C:\ta-lib (in Windows) and /usr (in Linux). so if you move the downloaded zip file to another location and extract it there (for Windows) or set ./configure --prefix to any location other than /usr (for Linux), then you would have to set TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables to your desired locations.

If you installed the underlying TA-Lib library with a custom prefix (e.g., with ./configure --prefix=$PREFIX), then when you go to install this python wrapper you can specify additional search paths to find the library and include files for the underlying TA-Lib library using the TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables:

$ export TA_LIBRARY_PATH=$PREFIX/lib
$ export TA_INCLUDE_PATH=$PREFIX/include
$ python setup.py install # or pip install ta-lib

Tags:

Python

Ta Lib