Python TA-lib 安装错误,如何解决?

10

我使用以下命令安装了TA-Lib:

pip install TA-lib
但是出现了错误"command 'gcc' failed with exit status 1":
查看故障排除,安装了gcc、python-devel、libffi-devel、openssl-devel,但仍然无法工作!
然后使用conda install -c quantopian ta-lib=0.4.9安装talib,但显示错误"The following specifications were found to be in conflict:- py-xgboost, - ta-lib 0.4.9*",之后运行conda info ta-lib,它返回"NoPackagesFoundError: Package missing in current linux-64 channels"。

1
请将错误以文本(而非图像)的形式发布。 - Alessandro Da Rugna
简而言之,要在Python中使用TA-Lib,需要先安装TA-Lib。具体请参见https://github.com/mrjbq7/ta-lib#dependencies - ptim
6个回答

18

我遇到了完全相同的问题,并成功解决并在Linux和我的OSX笔记本电脑上安装了TA-lib。这里我将坚持使用针对CentOS的linux说明,但两种操作系统的技巧都是相同的...在使用pip安装python包装器之前,必须在计算机上安装TA-lib二进制库。

我使用的参考链接:https://github.com/mrjbq7/ta-lib

如果此命令失败:

pip install TA-lib

对 ta_libc 标头文件进行抱怨:

func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory
compilation terminated.

在安装Python包装器之前,您需要先安装TA-lib二进制文件。我按照以下步骤进行了下载:

I downloaded it as follows:


wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz

然后解压、编译并安装它:

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

如果您的机器上没有gcc和/或python3-dev,那么上述步骤可能会让您感到困难。最初我也遇到了类似的问题,所以我使用以下命令解决了依赖关系:

sudo yum install gcc
sudo yum install python36-dev

然后重新从头开始执行步骤,这一次成功了。上述解决方案在我的情况下有效。

希望能对你有所帮助,祝好运!

顺便说一句,这是我第一次在这里回答问题,希望能帮助到某些人。我过去一直用StackOverflow解决很多问题,所以我希望能回报社区。

2018-08-30更新:我一直遇到编译问题,特别是会反复出现以下错误。原来是我在虚拟机中的内存不足(1GB)。解决方法请参考(https://github.com/mrjbq7/ta-lib/issues/133),所以我将内存升级为2GB,问题得以解决。

talib/_ta_lib.c:208671:15: warning: assignment from incompatible pointer type [enabled by default]

2021-03-06更新:OSX Catalina更新!在OSX Catalina(10.15+)上编译TA-lib时,上述说明无效,我不得不进行修改:
tar -xvf ta-lib-0.4.0-src.tar.gz 
cd ta-lib 
./configure 
make
sudo make install 

之后,pip安装成功。 -


1
请执行以下命令安装Python 3.6开发环境:sudo yum install python36-devel - Fan
感谢ManualSchneid3r清理我的指令! 干杯! - darekm101
OSX Catalina 更新!在 OSX Catalina(10.15+)上编译 TA-lib 时,以上说明无法正常工作,我不得不进行修改:tar -xvf ta-lib-0.4.0-src.tar.gz cd ta-lib ./configure make sudo make install之后,pip 安装就可以正常工作了。 - darekm101

3

我已经解决了使用conda环境的问题。

conda install -c quantopian ta-lib 

3

经过一番探索后,我发现在安装TA-lib时通常会遇到两个主要问题。

  1. 运行pip命令之前没有预先安装TA-lib二进制文件
  2. 你安装了多个版本的Python,导致安装失败

问题1:
首先需要安装二进制文件:

  1. 下载ta-lib-0.4.0-src.tar.gz
  2. tar -xzf ta-lib-0.4.0-src.tar.gz
  3. cd ta-lib/
  4. ./configure --prefix=/usr
  5. make
  6. sudo make install

然后再运行pip install TA-lib

问题2:
当你安装了不同版本的Python并使用非系统级别的pip时,可能会出现这个问题。这种情况下,非系统级别的pip找不到正确版本的Python头文件,从而导致以下错误: command 'x86_64-linux-gnu-gcc' failed with exit status 1

在这种情况下,解决方法是找到正确的Python头文件:

find / -iname 'Python.h'

输出:

/usr/include/python3.7m/Python.h
/usr/include/python3.6m/Python.h
/home/ubuntu/workspace/blender-git/lib/linux_centos7_x86_64/python/include/python3.7m/Python.h
/home/ubuntu/miniconda3/pkgs/python-3.8.5-h7579374_1/include/python3.8/Python.h
/home/ubuntu/miniconda3/pkgs/python-3.7.0-h6e4f718_3/include/python3.7m/Python.h
/home/ubuntu/miniconda3/include/python3.8/Python.h
/home/ubuntu/miniconda3/envs/sim/include/python3.7m/Python.h
/home/ubuntu/src/blender-deps/Python-3.7.7/Include/Python.h
/opt/lib/python-3.7.7/include/python3.7m/Python.h

然后导出正确的那一个:

export CPPFLAGS=-I/home/ubuntu/src/blender-deps/Python-3.7.7/Include

在执行pip install命令之后。

或者

只需将pip切换到另一个Python版本(例如):

pip3.6 install TA-lib 

1
如果下面的答案对您没有用(在我的情况下它没有用),您可以找到编译好的whl文件并从那里安装。
这里是ta-lib编译好的whl文件的链接

顺便说一下,这些文件仅适用于Windows操作系统。 - chris

1
这是我在Linux上解决此问题的方法: 首先,我从以下链接下载了C依赖项: https://ta-lib.org/hdr_dw.html 然后使用以下命令将其安装到本地目录:
./configure --prefix=<local_path_to_install_c_library>
make
make install

然后使用 pip 安装 ta-lib。确保给出 --global-options 来指定 pip 的本地库位置。
pip install --upgrade --global-option=build_ext --global-option="-L<local_path_to_install_c_library>/lib" --global-option="-I<local_path_to_install_c_library>/include" --install-option="--prefix=<local_path_to_install_python_lib>" ta-lib

1
你可以将这段内容放在名为install_talib.sh的脚本中,然后从命令行运行./install_talib.sh
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
if [ ! -f "ta-lib/CHANGELOG.TXT" ]; then
  tar zxvf ta-lib-0.4.0-src.tar.gz
  cd ta-lib && sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h && ./configure && make && sudo make install && cd ..
else
  echo "TA-lib already installed, skipping download and build."
  cd ta-lib && sudo make install && cd ..
fi

您可能需要为install_talib.sh文件添加权限。您可以使用以下命令完成此操作: chmod u+x install_talib.sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接