我遇到了@ mrjbq7的优秀作品,他为wrapper编写了一个Python TA-Lib - 一个用C语言编写的开源技术分析库。我已经安装了TA-Lib (与通常的configure
,make
,make install
一样容易)以及根据说明使用包装器(使用包含的setup.py脚本)但是在尝试时我收到导入错误导入模块或运行示例脚本(相同的导入错误)。
我在Linux机器上(sys.platform == 'linux2'
)并使用Python 2.7的Enthought发行版。
我已将TA-Lib安装到其默认位置,该位置由包装器setuptools
脚本指向(您可以看到setup.py here的来源):
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
然后我使用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
setup.py脚本清楚地包含Extension类中编译的TA-Lib代码的相应路径,但我注意到Cython代码构建中的gcc
命令不包含对{的引用{1}}路径......(不确定这是否是问题?)。
我希望有人遇到过这个模块或类似的情况吗?
答案 0 :(得分:12)
关闭@rcovre,我在@ mrjbq的github网站上发布了一个问题,他回答了非常简单的解决方案:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
对于永久性解决方案,必须以{root}身份添加/usr/local/lib
,然后运行/etc/ld.so.conf
(也作为root用户)。
像魅力一样。
答案 1 :(得分:0)
你的python路径怎么样?
也许所有已编译的库都可以存储在sys.path的某个目录中,以供python解释器查看。例如在'/usr/local/lib/python2.7/dist-packages'中,而不只是在'/ usr / local / lib'中(如在安装脚本中)。
答案 2 :(得分:0)
首先应安装ta-lib,python lib ta-lib
基于此c lib。