【問題点】
pip3 install Ta-lib を実行すると以下のようなエラーが出ました。
WARNING: The directory '/Users/hogehoge/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/Users/hogehoge/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting Ta-lib
Downloading https://files.pythonhosted.org/packages/90/05/d4c6a778d7a7de0be366bc4a850b4ffaeac2abad927f95fa8ba6f355a082/TA-Lib-0.4.17.tar.gz (717kB)
|████████████████████████████████| 727kB 1.4MB/s
Requirement already satisfied: numpy in /usr/local/lib/python3.7/site-packages (from Ta-lib) (1.15.1)
Building wheels for collected packages: Ta-lib
Building wheel for Ta-lib (setup.py) ... error
ERROR: Complete output from command /usr/local/opt/python/bin/python3.7 -u -c 'import setuptools, tokenize;__file__='"'"'/private/tmp/pip-install-hj6txy4c/Ta-lib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/tmp/pip-wheel-qimpa1sv --python-tag cp37:
ERROR: /private/tmp/pip-install-hj6txy4c/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 bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.14-x86_64-3.7
creating build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/abstract.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_abstract.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/deprecated.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/__init__.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/stream.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_pandas.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_data.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_func.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_stream.py -> build/lib.macosx-10.14-x86_64-3.7/talib
running build_ext
building 'talib._ta_lib' extension
creating build/temp.macosx-10.14-x86_64-3.7
creating build/temp.macosx-10.14-x86_64-3.7/talib
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/include -I/usr/local/include -I/opt/include -I/opt/local/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c talib/_ta_lib.c -o build/temp.macosx-10.14-x86_64-3.7/talib/_ta_lib.o
talib/_ta_lib.c:526:10: fatal error: 'ta-lib/ta_defs.h' file not found
#include "ta-lib/ta_defs.h"
^~~~~~~~~~~~~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for Ta-lib
Running setup.py clean for Ta-lib
Failed to build Ta-lib
Installing collected packages: Ta-lib
Running setup.py install for Ta-lib ... error
ERROR: Complete output from command /usr/local/opt/python/bin/python3.7 -u -c 'import setuptools, tokenize;__file__='"'"'/private/tmp/pip-install-hj6txy4c/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 /private/tmp/pip-record-1gz1p7rd/install-record.txt --single-version-externally-managed --compile:
ERROR: /private/tmp/pip-install-hj6txy4c/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.macosx-10.14-x86_64-3.7
creating build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/abstract.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_abstract.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/deprecated.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/__init__.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/stream.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_pandas.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_data.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_func.py -> build/lib.macosx-10.14-x86_64-3.7/talib
copying talib/test_stream.py -> build/lib.macosx-10.14-x86_64-3.7/talib
running build_ext
building 'talib._ta_lib' extension
creating build/temp.macosx-10.14-x86_64-3.7
creating build/temp.macosx-10.14-x86_64-3.7/talib
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/include -I/usr/local/include -I/opt/include -I/opt/local/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c talib/_ta_lib.c -o build/temp.macosx-10.14-x86_64-3.7/talib/_ta_lib.o
talib/_ta_lib.c:526:10: fatal error: 'ta-lib/ta_defs.h' file not found
#include "ta-lib/ta_defs.h"
^~~~~~~~~~~~~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
ERROR: Command "/usr/local/opt/python/bin/python3.7 -u -c 'import setuptools, tokenize;__file__='"'"'/private/tmp/pip-install-hj6txy4c/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 /private/tmp/pip-record-1gz1p7rd/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-install-hj6txy4c/Ta-lib/
【解決方法】
まずは、homebrew で Ta-lib をインストールします。
brew install TA-Lib
以下のようなメッセージが出て、正常にインストールが成長します。
==> Downloading https://homebrew.bintray.com/bottles/ta-lib-0.4.0.catalina.bottle.1.tar.gz
しかし、この時点で python3 で import TA-Lib とやってもエラーがおきます。
ここから更に、pip3 でインストールしてやる必要があります。
sudo pip3 install Ta-lib
すると、以下のようにインストールがうまくいきます。
WARNING: The directory '/Users/hogehoge/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/Users/hogehoge/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting Ta-lib
Downloading https://files.pythonhosted.org/packages/90/05/d4c6a778d7a7de0be366bc4a850b4ffaeac2abad927f95fa8ba6f355a082/TA-Lib-0.4.17.tar.gz (717kB)
|████████████████████████████████| 727kB 834kB/s
Requirement already satisfied: numpy in /usr/local/lib/python3.7/site-packages (from Ta-lib) (1.15.1)
Building wheels for collected packages: Ta-lib
Building wheel for Ta-lib (setup.py) ... done
Stored in directory: /Users/hogehoge/Library/Caches/pip/wheels/2a/2e/ec/71c565b2e0091e03a2b56abfbfd062f14a01a8d7b20ffe8bd5
Successfully built Ta-lib
Installing collected packages: Ta-lib
Successfully installed Ta-lib-0.4.17
まとめ
mac で TA-Lib のインストールがうまくいかない時は、homebrew でインストールし、そのあとで pip3 で TA-Lib をインストールしましょう。