3

TA-LibのPythonラッパー(Cで記述されたオープンソースのテクニカル分析ライブラリ)を作成した@ mrjbq7の優れた作品に出くわしました。両方のTA-Libをインストールしました(通常どおり簡単です、、)指示に従ってラッパー(付属のsetup.pyスクリプトを使用)も同様ですが、モジュールをインポートしようとしたり、サンプルスクリプトを実行しようとすると、インポートエラーが発生します(同じインポートエラー)。configuremakemake install

私はLinuxマシン(sys.platform == 'linux2')を使用しており、Python2.7のEnthoughtディストリビューションを使用しています。

TA-Libを、ラッパースクリプトが指すデフォルトの場所にインストールしましたsetuptools(setup.pyのソースはここにあります)。

bash$ ls -la /usr/local/include/ta-lib/
total 240
drwxr-xr-x 2 root root   4096 2012-08-04 08:54 .
drwxr-xr-x 3 root root   4096 2012-08-04 08:54 ..
-rw-r--r-- 1 root root  19930 2012-08-04 08:54 ta_abstract.h
-rw-r--r-- 1 root root   4792 2012-08-04 08:54 ta_common.h
-rw-r--r-- 1 root root  12391 2012-08-04 08:54 ta_defs.h
-rw-r--r-- 1 root root 181115 2012-08-04 08:54 ta_func.h
-rw-r--r-- 1 root root   1849 2012-08-04 08:54 ta_libc.h

bash$ ls -la /usr/local/lib
total 4956
drwxr-xr-x  3 root root    4096 2012-08-04 08:54 .
drwxr-xr-x 12 root root    4096 2011-04-06 23:47 ..
-rw-r--r--  1 root root 3063180 2012-08-04 08:54 libta_lib.a
-rwxr-xr-x  1 root root     837 2012-08-04 08:54 libta_lib.la
lrwxrwxrwx  1 root root      18 2012-08-04 08:54 libta_lib.so -> libta_lib.so.0.0.0
lrwxrwxrwx  1 root root      18 2012-08-04 08:54 libta_lib.so.0 -> libta_lib.so.0.0.0
-rwxr-xr-x  1 root root 1983243 2012-08-04 08:54 libta_lib.so.0.0.0
drwxr-xr-x 11 root root    4096 2011-04-07 17:10 pythonEPD

次に、以下を使用してCythonコードを正常にビルドしますpython setup.py install

bash$ python setup.py install
running install
running build
running build_ext
building 'talib' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -O2 -I/usr/local/lib/pythonEPD/include -fPIC -I/usr/local/lib/pythonEPD/lib/python2.7/site-packages/numpy/core/include -I/usr/local/include/ta-lib/ -I/usr/local/lib/pythonEPD/include/python2.7 -c talib.c -o build/temp.linux-i686-2.7/talib.o

...
[truncated - lots of warnings regarding pointer types]
---

gcc -pthread -shared -g -L/usr/local/lib/pythonEPD/lib build/temp.linux-i686-2.7/talib.o -L/usr/local/lib/ -L. -lta_lib -lpython2.7 -o build/lib.linux-i686-2.7/talib.so
running install_lib
copying build/lib.linux-i686-2.7/talib.so -> /usr/local/lib/pythonEPD/lib/python2.7/site-packages
running install_egg_info
Writing /usr/local/lib/pythonEPD/lib/python2.7/site-packages/TA_Lib-0.4.0-py2.7.egg-info

しかし、サンプルスクリプトを実行したり、talibをインポートしようとすると、次のインポートエラーが発生します。

bash$ python
Enthought Python Distribution -- www.enthought.com
Version: 7.0-2 (32-bit)

Python 2.7.1 |EPD 7.0-2 (32-bit)| (r271:86832, Nov 29 2010, 13:52:51) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import talib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory

gccsetup.pyスクリプトには、Extensionクラスのコンパイル済みTA-Libコードへの適切なパスが明確に含まれていますが、Cythonコードのビルドのコマンドにパスへの参照が含まれていないことに気付きました/usr/local/lib...(これかどうかはわかりません)問題はありますか?)

私は誰かがこのモジュールまたは同様の状況でこれに遭遇したことを望んでいますか?

4

3 に答える 3

12

@rcovreを閉じて、@ mrjbqのgithubサイトに問題を投稿したところ、彼は非常に簡単な解決策で応答しました。

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

永続的なソリューションの場合は、rootとして追加/usr/local/libしてから/etc/ld.so.conf実行する必要があります/sbin/ldconfig(rootとしても)。

チャームのように機能します。

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

于 2012-08-05T04:19:56.693 に答える
0

あなたのPythonパスはどうですか?

コンパイルされたすべてのライブラリがsys.pathのディレクトリに保存され、Pythonインタープリターに表示される場合があります。たとえば、(セットアップスクリプトのように)「/ usr / local / lib」だけでなく、「/ usr / local / lib / python2.7/dist-packages」にあります。

于 2012-08-05T02:21:46.843 に答える
0

最初にta-libをインストールする必要があります。pythonlibta-libはこのclibに基づいています。

于 2017-02-14T13:20:12.680 に答える