質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6529閲覧

pythonのTA-Libについて困っています

gik

総合スコア152

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/03/05 12:10

編集2016/03/05 12:14

cent os7でpythonのTA-Lib (0.4.9)をつかいたく
Python 2.7.10 -- 64-bit
インストールし、他の必要なものをインストールしましたが

pip list
appinst (2.1.5)
apptools (4.3.0)
atom (0.3.9)
backports-abc (0.4)
beautifulsoup4 (4.4.1)
boto (2.38.0)
bz2file (0.98)
Canopy (1.6.2)
canopy-dashboard (0.6.0)
canopy-packman-plugin (0.1.3)
canopy-platform (0.8.3)
CanopyDebugger (0.1.2.dev0)
casuarius (1.1)
certifi (2015.11.20.1)
chaco (4.5.0)
click (4.0)
codetools (4.2.0)
common (0.1.1)
configobj (5.0.6)
cycler (0.9.0)
decorator (4.0.4)
distribute-remove (1.0.0)
docutils (0.12)
enable (4.5.1)
enaml (0.9.8)
enapp (1.0.0)
enclosure (0.3.0)
encore (0.6.0)
enstaller (4.8.10)
envisage (4.5.0.dev33)
esky (0.9.8)
Examples (7.3)
faulthandler (2.4)
feedparser (5.2.0)
flake8 (2.4.1)
freetype (2.5.3)
futures (2.2.0)
gensim (0.12.4)
glib (2.36.1)
gnureadline (6.3.3)
grits-client (0.1)
gst-plugins-base (0.10.36)
gstreamer (0.10.36)
hatcher (0.8.7)
html5lib (0.999)
httpretty (0.8.10)
idle (2.7.3)
ipykernel (4.2.0)
ipython (4.0.0)
ipython-genutils (0.1.0)
ipython4 (4.0.1)
ipywidgets (4.1.1)
jigna (0.9.5)
Jinja2 (2.8)
jsm (0.19)
jsonpickle (0.4.0)
jsonschema (2.4.0)
jupyter (1.0.0)
jupyter-client (4.1.1)
jupyter-console (4.0.3)
jupyter-core (4.0.6)
kernmagic (0.2.0)
keyring (4.0)
kiwisolver (0.1.3)
libffi (3.0.13)
libgfortran (3.0.0)
libjpeg (7.0)
libncurses (5.9)
libopenjpeg (2.1.0)
libpng (1.6.12)
libsodium (1.0.3)
libtheora (1.1.1)
libxml2 (2.9.2)
libxslt (1.1.28)
lxml (3.4.4)
MarkupSafe (0.23)
matplotlib (1.5.1)
mccabe (0.3)
memory-profiler (0.33)
mistune (0.7.1)
MKL (10.3)
mkl-service (1.0)
nbconvert (4.1.0)
nbformat (4.0.1)
nose (1.3.4)
notebook (4.0.6)
numpy (1.9.2)
okonomiyaki (0.9.0)
pandas (0.17.1)
path.py (8.1.1)
pep8 (1.6.2)
pexpect (3.3)
pickleshare (0.5)
PIL-remove (1.0.0)
pillow (3.0.0)
pip (8.0.3)
ply (3.8)
psutil (3.3.0)
ptyprocess (0.4)
pyaudio (0.2.4)
pycrypto (2.6.1)
pyface (5.0.0)
pyflakes (1.0.0)
pyglet (1.1.4)
Pygments (2.0.2)
pyparsing (2.0.3)
pyreadline (2.1)
PySide (1.2.2)
python-dateutil (2.4.2)
PythonDoc (2.7.3)
pytz (2015.7)
PyYAML (3.11)
pyzmq (15.1.0)
Qt (4.8.7)
qtconsole (4.1.1)
requests (2.8.1)
scikit-learn (0.17.1)
scipy (0.16.1)
setuptools (19.1.1)
shiboken (1.2.2)
simplegeneric (0.8.1)
singledispatch (3.4.0.3)
six (1.10.0)
smart-open (1.3.2)
ssl-match-hostname (3.4.0.2)
supplement (0.5.dev0)
sympy (0.7.6.1)
TA-Lib (0.4.9)
tablib (0.11.2)
tabulate (0.7.3)
terminado (0.5)
Theano (0.7.0)
tornado (4.3)
traitlets (4.0.0)
traits (4.5.0)
traits-enaml (0.2.1)
traitsui (5.0.0)
wxPython (3.0.2.0)
zeromq (4.1.3)
zipfile2 (0.0.8)

ipython
Python 2.7.10 | 64-bit | (default, Oct 21 2015, 12:08:08)
Type "copyright", "credits" or "license" for more information.

IPython 4.0.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
Using matplotlib backend: Qt4Agg

In [1]: import talib

ImportError Traceback (most recent call last)
<ipython-input-1-9bc7b4202a1f> in <module>()
----> 1 import talib

/root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/talib/init.py in <module>()
2 import atexit
3
----> 4 from . import common
5 from . import abstract
6 from .common import MA_Type, ta_version

ImportError: libta_lib.so.0: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません

起動させると上記のようなエラーがでます。
申し訳ないのですが、どうすれば使えるようになるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずta-libのcythonライブラリ本体のインストールを手動で行います。

GitHub ta-lib

このときインストールする場所を調べるため,

python

1import sys 2print(sys.path) #3系,2系は()を外す

などを実行してライブラリのパスを覚えておいてください。

このとき,上記リンク先の手順の./configure時のオプションをlibディレクトリの一個上の階層にします。

./configure --prefix = /usr/local (/usr/local/lib/python〜にパスが通っていた場合)

を実行するとlib/libta_lib.so.0がlib以下に作成されます。これでコード実行したとき,同じ階層にpythonの実行ライブラリがあるので,ta-libを参照できます。

この状態でpip install ta-libする事によって,正常にインストールが完了すればpythonでimportできるようになります。

もし,pythonの本体ライブラリのpathと違う所にlibta_lib.so.0を作成してしまった場合は,

shell

1ln -s libta_lib.so.0のパス pythonライブラリのパス

でシンボリックリンクを貼る事で実行できるようになります。
私はpyenvを使っているため,/usr/local/lib/libta_.so.0を作成し,pyenv以下のライブラリのパスにシンボリックリンクを貼りましたが問題なく動作しました。

投稿2016/03/05 15:26

編集2016/03/05 15:34
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gik

2016/03/05 16:50 編集

tkowさんの言う通りイントールしてみました その後 In [1]: import talib --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-9bc7b4202a1f> in <module>() ----> 1 import talib /root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/talib/__init__.py in <module>() 5 from . import abstract 6 from .common import MA_Type, __ta_version__ ----> 7 from .common import _ta_set_unstable_period as set_unstable_period 8 from .common import _ta_get_unstable_period as get_unstable_period 9 from .func import * ImportError: cannot import name _ta_set_unstable_period というエラーが出ました。 ln -s libta_lib.so.0のパスを/root/Enthought/Canopy_64bit/User/binにシンボリックしました print sys.path ['', '/root/Enthought/Canopy_64bit/User/bin', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python27.zip', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/plat-linux2', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/lib-tk', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/lib-old', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/lib-dynload', '/root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages', '/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/python2.7/site-packages', '/root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/IPython/extensions', '/root/.ipython'] Canopyつかっています まだできません。 すいません。助けて下さい
退会済みユーザー

退会済みユーザー

2016/03/05 20:14 編集

/root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/ 以下にlibta_lib.so.0のシンボリックリンクを作ることで解決すると思います。 おそらく,python ta-lib wrapperのモジュールの参照先がlibというフォルダ内を探索するようになっているのだと思います。(おそらくですがta-lib本体がpythonのモジュールではないのでta-libのwrapperからの参照がpythonのpathではない可能性があります。) ln -s ($自分の環境のLibパス)/libta_lib.so.0 /root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/libta_lib.so.0 を実行してimportしてみてください。因みにpip install は成功していますか? 追記 実験でbinにシンボリックリンクを通したところエラーにあったのですが,エラーの行数がが違いますね。ただ正しく動いていたものがエラーになったので上記の修正で治るかもしれないです。.commonがlibパスにあるモジュールを全部読み込んでると思うので,libパスにta-libが存在しないことがそのエラーの根本的な原因だと思います。あとはfile名打ち間違いなどで空のシンボリックリンクを指定してしまっているとかの印象受けますね。上記で治らなければまた調査しますね。 Type "copyright", "credits" or "license" for more information. IPython 4.1.2 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: import talib --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-9bc7b4202a1f> in <module>() ----> 1 import talib /home/vagrant/.pyenv/versions/2.7.11/lib/python2.7/site-packages/talib/__init__.py in <module>() 2 import atexit 3 ----> 4 from . import common 5 from . import abstract 6 from .common import MA_Type, __ta_version__ ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory
gik

2016/03/06 06:24 編集

すいません。 エラーがでました。 In [1]: import talib --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-9bc7b4202a1f> in <module>() ----> 1 import talib /root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/talib/__init__.py in <module>() 5 from . import abstract 6 from .common import MA_Type, __ta_version__ ----> 7 from .common import _ta_set_unstable_period as set_unstable_period 8 from .common import _ta_get_unstable_period as get_unstable_period 9 from .func import * ImportError: cannot import name _ta_set_unstable_period ta-libを再度インストールしてみました pip install ta-lib Requirement already satisfied (use --upgrade to upgrade): ta-lib in /root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages 今現在シンボリックリンクで /root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/ の中は ibta_lib.so.0 -> /lib/libta_lib.so.0 となっています シンボリックリンク以下のコマンドを実行しました ln -s lib/libta_lib.so.0 /root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib/libta_lib.so どこか間違っていますでしょうか。 あと申し訳ないのですが、どの部分を情報だしたらいいのかわからないので、 この情報出してと言われれば出します。よろしくお願います。
退会済みユーザー

退会済みユーザー

2016/03/06 08:16

あぁなるほどごめんなさい。使われているpythonのライブラリのパスが /root/Canopy/appdata/canopy-1.6.2.3262.rh5-x86_64/lib ではなく /root/Enthought/Canopy_64bit/User/lib/ こっちなんだと思います。 ln -s lib/libta_lib.so.0 /root/Enthought/Canopy_64bit/User/lib/libta_lib.so を実行してみたらどうなりますか?
gik

2016/03/06 08:40 編集

実行しました ln -s lib/libta_lib.so.0 /root/Enthought/Canopy_64bit/User/lib/libta_lib.so その後 In [1]: import talib --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-9bc7b4202a1f> in <module>() ----> 1 import talib /root/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/talib/__init__.py in <module>() 5 from . import abstract 6 from .common import MA_Type, __ta_version__ ----> 7 from .common import _ta_set_unstable_period as set_unstable_period 8 from .common import _ta_get_unstable_period as get_unstable_period 9 from .func import * ImportError: cannot import name _ta_set_unstable_period というエラーがまたでました /root/Enthought/Canopy_64bit/User/lib/ のシンボリックリンク libta_lib.so -> lib/libta_lib.so.0 となっています。
退会済みユーザー

退会済みユーザー

2016/03/06 09:29 編集

僕の環境だと/home/vagrant/.pyenv/versions/2.7.11/lib/python2.7/site-packages/talib/__init__.pyの中身が import atexit↲ ↲ from . import common↲ from . import abstract↲ from .common import MA_Type, __ta_version__↲ from .func import *↲ __version__ = '0.4.9'↲ となっていて,gik様の__init__.py と多少異なっています よく見れば.commonのロードがうまくいっていることから古いta-libをpip installしていることが原因かもしれません。なので,pip install -u pip を実行後, pip install -U ta-lib を試していただけますでしょうか。 gik様の環境にあるta-libの__init__.pyに書かれているversionを確認していただけば会っているかどうかわかると思います。もしバージョンがあっていれば,7行目8行目を消してもらえれば動くかもしれません。
gik

2016/03/06 09:56

動きました。 本当にありがとうございました。
退会済みユーザー

退会済みユーザー

2016/03/06 10:03

よかったです。因みに消して直しました?それともアップデートしたら解決しましたか? githubのコードも読んだんですけど最新版は from .common import _ta_set_unstable_period as set_unstable_period from .common import _ta_get_unstable_period as get_unstable_period を追加してるみたいなのですが,ビルドの仕方が異なるため,PyPIでは排除されたのかと予想しています。 軽微な機能追加だと思うので,ここは削除されていても問題なく使えると思います。
gik

2016/03/06 10:32

from .common import _ta_set_unstable_period as set_unstable_period from .common import _ta_get_unstable_period as get_unstable_period の部分を消したら直りました。 親切に対応していただき本当にありがとうございました。
退会済みユーザー

退会済みユーザー

2016/03/06 13:18

なるほど。ありがとうございます! pythonはpip以外のモジュールのビルドが絡むと事故りやすいので大変ですよね。 解決できて何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問