无法在Python 3.7中安装TA-Lib

时间:2018-12-19 06:30:40

标签: python ta-lib

我正在尝试为Python 3.7安装TA-Lib。我已经阅读了许多解决方案,但是到了我无法弄清楚的地步。这是我从pip收到的消息:

Collecting ta-lib
  Using cached https://files.pythonhosted.org/packages/90/05/d4c6a778d7a7de0be366bc4a850b4ffaeac2abad927f95fa8ba6f355a082/TA-Lib-0.4.17.tar.gz
Requirement already satisfied: numpy in c:\python37_64\lib\site-packages (from ta-lib) (1.15.4)
Installing collected packages: ta-lib
  Running setup.py install for ta-lib: started
Command "c:\python37_64\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\Todd\\AppData\\Local\\Temp\\pip-install-0c2__0gf\\ta-lib\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Todd\AppData\Local\Temp\pip-record-3dpfanca\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Todd\AppData\Local\Temp\pip-install-0c2__0gf\ta-lib\
    Running setup.py install for ta-lib: finished with status 'error'
    Complete output from command c:\python37_64\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\Todd\\AppData\\Local\\Temp\\pip-install-0c2__0gf\\ta-lib\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Todd\AppData\Local\Temp\pip-record-3dpfanca\install-record.txt --single-version-externally-managed --compile:
    C:\Users\Todd\AppData\Local\Temp\pip-install-0c2__0gf\ta-lib\setup.py:79: UserWarning: Cannot find ta-lib library, installation may fail.
      warnings.warn('Cannot find ta-lib library, installation may fail.')
    running install
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.7
    creating build\lib.win-amd64-3.7\talib
    copying talib\abstract.py -> build\lib.win-amd64-3.7\talib
    copying talib\deprecated.py -> build\lib.win-amd64-3.7\talib
    copying talib\stream.py -> build\lib.win-amd64-3.7\talib
    copying talib\test_abstract.py -> build\lib.win-amd64-3.7\talib
    copying talib\test_data.py -> build\lib.win-amd64-3.7\talib
    copying talib\test_func.py -> build\lib.win-amd64-3.7\talib
    copying talib\test_pandas.py -> build\lib.win-amd64-3.7\talib
    copying talib\test_stream.py -> build\lib.win-amd64-3.7\talib
    copying talib\__init__.py -> build\lib.win-amd64-3.7\talib
    running build_ext
    building 'talib._ta_lib' extension
    creating build\temp.win-amd64-3.7
    creating build\temp.win-amd64-3.7\Release
    creating build\temp.win-amd64-3.7\Release\talib
    C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\python37_64\lib\site-packages\numpy\core\include -Ic:\ta-lib\c\include -Ic:\python37_64\include -Ic:\python37_64\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt" /Tctalib/_ta_lib.c /Fobuild\temp.win-amd64-3.7\Release\talib/_ta_lib.obj
    _ta_lib.c
    talib/_ta_lib.c(524): fatal error C1083: Cannot open include file: 'ta_libc.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

    ----------------------------------------
FINISHED

谢谢。

4 个答案:

答案 0 :(得分:3)

错误的根本原因可能是因为您没有安装用 C 编写的实际 TA-Lib 库。请注意,python 库只是实际库顶部的包装器。因此,为了成功安装 python 包装器,您需要安装它的先决条件(实际的 TA-Lib)。

有关详细信息,请参阅 https://github.com/mrjbq7/ta-lib#dependencies

来自上面的参考(为了便于访问):

安装实际的 TA-Lib(python 包装器的先决条件):

Windows

  1. 下载 ta-lib-0.4.0-msvc.zip 并解压到 C:\ta-lib

  2. 将解压后的文件夹 ta-lib 移动到 C:\

  3. 如果尚未安装,请下载并安装 Visual Studio Community 2015(记得选择 [Visual C++] 功能)

  4. 打开 x64 Native Tools 命令提示符

  5. 导航到 C:\ta-lib\c\make\cdr\win32\msvc

  6. 输入 nmake(此命令构建库)

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
<块引用>

如果您使用的是 M1 笔记本电脑和 Homebrew,那么您可以在安装前进行设置:

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

提示:默认情况下,setup.py 似乎从 C:\ta-lib(在 Windows 中)和 /usr(在 Linux 中)读取实际的库文件。因此,如果您将下载的 zip 文件移动到另一个位置并在那里解压(对于 Windows)或将 ./configure --prefix 设置为除 /usr 以外的任何位置(对于 Linux),那么您必须设置 {{1 }} 和 TA_LIBRARY_PATH 环境变量到您想要的位置。

<块引用>

如果您使用自定义前缀(例如,使用 ./configure --prefix=$PREFIX)安装了底层 TA-Lib 库,那么当您去安装这个 python 包装器时,您可以指定额外的搜索路径来查找库并使用 TA_LIBRARY_PATH 和 TA_INCLUDE_PATH 环境变量包含基础 TA-Lib 库的文件:

TA_INCLUDE_PATH

答案 1 :(得分:1)

这对我有用...

here下载TA_Lib-0.4.10-cp27-cp27m-win_amd64.whl 并使用命令pip install TA_Lib-0.4.10-cp27-cp27m-win_amd64.whl

我正在使用Conda4和python 3.6 64位版本。

您也可以尝试另一种方式

要使用Python 3.6+安装Ta-Lib,Windows 64位,请使用此pip install -i https://pypi.anaconda.org/masdeseiscaracteres/simple ta-lib

答案 2 :(得分:0)

我建议使用here的滚轮进行安装。最近,我在尝试升级库时遇到了同样的问题,这又是您不想做的另一件事。 希望这可以帮助。祝你好运。

答案 3 :(得分:0)

这里 Ta-lib 包的文档很清楚:

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

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

正如它明确提到的那样!这个 python ta-lib 库!是 https://ta-lib.org/

处 TaLib 库的包装器 <块引用>

这是基于 Cython 而不是 SWIG 的 TA-LIB 的 Python 包装器

要知道ta-lib.org库是c lang创建的库!您可以查看here

并且针对不同的语言做了多种绑定和接口!和官网说的一样!

python 库是对使用 cython 的 python 的绑定!这使它比 SWIG 更高效!

知道我会坚持使用pip!(它运行良好,而且很方便)

为了安装顺利!你需要分两步走!您需要先安装 TaLib 原生库二进制文件!然后安装python lib with pip(再次使用pip)!而且这个命令是必须的!在第一次安装完成之前,你不能去安装 python 绑定!

说了这么多!

安装

第一步:安装 Talib 原生二进制

安装Ta-lib 软件(或本机库二进制文件)必须!而且需要先做

按照此处的说明操作:

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

说明太清楚太详细了!

(Linux 用户需要以正确的权限执行命令(因此使用 sudo))

最后一件事!您可以在此线程中查看@Code_Worm 答案here 他对上述说明的许多要点进行了很好的解释!

我也会指出他的提示:

<块引用>

提示:默认情况下,setup.py 似乎从 C:\ta-lib(在 Windows 中)和 /usr(在 Linux 中)读取实际的库文件。因此,如果您将下载的 zip 文件移动到另一个位置并将其解压缩到那里(对于 Windows)或将 ./configure --prefix 设置为 /usr 以外的任何位置(对于 Linux),那么您必须设置 TA_LIBRARY_PATH 和 TA_INCLUDE_PATH 环境变量到您想要的位置。

检查下面这个提示的部分!

您可以查看故障排除部分here

第2步:使用pip安装python库

在第一步成功完成之前不要继续这一步!

再次使用 pip 包,pip 运行良好!所以不需要使用来自任何其他网站的一些 whl 文件和 src!我会告诉你怎么做!

pip install TA-Lib

但是这里有很多话要说!

首先你需要使用python 3

所以你可以使用 pip3 而不是 pip!如果 pip 解析为 python2 版本(这在 linux 安装中很常见)!

pip3 install TA-Lib

现在你可能会陷入这个问题和错误!

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

如果是这样的话!这是python 3.9可能带来的问题! (如果您使用的是 3.8,您可能根本不会遇到这种情况)!

解决方法很简单!我们只需要对一些软件包进行升级!您可以按照此处答案中的说明进行操作:

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

<块引用>

经过反复试验,我升级了 pip、distlib 和 setuptools,它解决了。不知道是哪一个导致了它。 (在最后两个我发现问题 1 2 其他网站) 是python3.9中去掉了HTMLParser中的unescape导致的,好像破解了setuptools。

pip3 install --upgrade setuptools

如果它不起作用,也试试:

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

就是这样!如果第一步(步骤 1:安装 TaLib 原生二进制文件)做得好并且完成了!那么这次运行 pip3 install TA-Lib 效果会很好!

对于 Linux 用户!如果你用 sudo!它失败了!不要使用sudo!你不应该!

Linux 用户可能需要安装 python 头文件

sudo apt-get install python3-dev

没有效果的可以试试!在大多数 linux 发行版中!默认情况下你会没事的!

最后(疑难解答文档部分)

如果需要,请检查故障排除部分 here