8

我使用以下命令安装 TA-lib,

pip install TA-lib

但收到此错误“命令‘gcc’失败,退出状态为 1”:

检查了故障排除,安装了 gcc、python-devel、libffi-devel、openssl-devel,但仍然无法正常工作!

然后使用 conda install -c quantopian ta-lib=0.4.9install talib 但显示错误“发现以下规范存在冲突:- py-xgboost,- ta-lib 0.4.9 *”然后conda info ta-lib, it return the"NoPackagesFoundError: Package missing in current linux-64 channels"

4

6 回答 6

14

我遇到了完全相同的问题,并且能够解决它并在 Linux 和我的 OSX 笔记本电脑上安装 TA-lib。我将在这里特别遵循 CentOS 的 linux 指令,但两者的诀窍是相同的……您必须在机器上安装 TA-lib 二进制库,然后才能使用 pip 安装 python 包装器。

我使用的参考资料:ttps://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 二进制文件。我下载它如下:

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 UDPATE:我一直遇到编译问题,特别是下面列出的错误会重复发生。事实证明,我在虚拟机中没有足够的 RAM (1GB)。解决方案参考:( https://github.com/mrjbq7/ta-lib/issues/133)所以我升级了RAM(2GB)并且问题消失了。

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

2021-03-06 UDPATE: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 安装工作正常。——</p>

于 2017-08-17T14:33:39.587 回答
3

所以经过一番探索,我发现在尝试安装 TA-lib 时通常会出现两个主要问题。

  1. 在运行 pip install 命令之前,您没有预先安装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. 制作
  6. 须藤使安装

和运行pip install TA-lib

问题 2
当您安装了不同的 Python 版本并且您使用的 pip 不是系统的 pip 时,就会出现此问题。在这种情况下,非系统 pip 将找不到正确版本的 Python 标头。导致以下错误: 命令“x86_64-linux-gnu-gcc”失败,退出状态为 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 
于 2021-05-26T07:20:41.487 回答
3

我已经解决了 conda environment.using 的问题

conda install -c quantopian ta-lib 
于 2019-09-07T10:10:46.263 回答
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

于 2021-02-21T10:54:51.700 回答
1

如果以下答案对您不起作用(在我的情况下没有),您可以找到已编译的 whl 文件并从那里安装。

这是ta-lib 的已编译 whl 文件的链接

于 2018-01-13T13:02:14.763 回答
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
于 2021-02-04T14:06:44.673 回答