由于需要和朋友比对一个结果,需要在Windows 10中安装TA-Lib库,写点简单的python代码。

本来以为就简单的执行下pip install TA-Lib就OK了。

然后,安装失败:

fatal error: ta-lib/ta_libc.h: No such file or directory
compilation terminated.
网上搜索,提示:This typically means that it can't find the underlying TA-Lib library, a dependency which needs to be installed.
但是没有进一步说怎么安装TA-Lib库。于是翻看setup.py代码,发现如果是win32系统,会到C盘去找TA-Lib库

于是直接把ta-lib-0.4.0-msvc.zip里的 ta-lib/c 目录里的所有内容拷贝到c:\ta-lib\c 下。

执行pip install TA-Lib。
然后,安装还是失败:

common.obj : warning LNK4197: export 'PyInit_common' specified multiple times; using first specification
       Creating library build\temp.win-amd64-3.5\Release\talib\common.cp35-win_amd64.lib and object build\temp.win-amd64-3.5\Release\talib\common.cp35-win_amd64.exp
    common.obj : error LNK2001: unresolved external symbol TA_SetUnstablePeriod
    common.obj : error LNK2001: unresolved external symbol TA_Shutdown
    common.obj : error LNK2001: unresolved external symbol TA_Initialize
    common.obj : error LNK2001: unresolved external symbol TA_GetUnstablePeriod
    common.obj : error LNK2001: unresolved external symbol TA_GetVersionString
    build\lib.win-amd64-3.5\talib\common.cp35-win_amd64.pyd : fatal error LNK1120: 5 unresolved externals
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64\\link.exe' failed with exit status 1120

链接错误。。。。。。翻看了一些ta-lib在github上的issue,里面提到ta-lib的C库是32位的。
但是pip安装的时候需要编译common.c,然后再和ta-lib的C库中的lib链接起来,问题就在这里了。github上有人建议重新在64位下编译ta-lib库来解决这个问题。

经过几番挣扎,最后的解决方法是:
开始  -> 所有程序 -> Mircosoft Visual Studio 2010 -> visual studio tools -> Visual Studio x64 win64 command prompt (2010)

在VS x64 win64命令行下,cd C:\ta-lib\c\make\cdr\win32\msvc 目录下,执行nmake
等执行完毕后,再运行pip install ta-lib, 这次终于成功了