如何在Linux中永久链接MKL库到Numpy?

3
我使用Intel的MKL库构建了Numpy(这对我来说是一个困难的过程,我花了整整一天的时间!)。Numpy需要使用LD_LIBRARY_PATH环境变量链接到MKL库,或者至少我是这样做的...因此我在.bashrc中使用export保存路径,当我启动新控制台并运行python时,Numpy会正确加载库文件。
问题是它不能与我用Pydev开发程序的Eclipse一起使用。我仍然可以在Eclipse的首选项中添加LD_LIBRARY_PATH,但是当我尝试安装Scipy时,问题就变得真实了。Scipy的安装脚本需要导入Numpy,即使LD_LIBRARY_PATH已经正确设置,我仍然无法导入MKL库并出现错误:
$ sudo python setup.py install
Traceback (most recent call last):
  File "setup.py", line 208, in <module>
    setup_package()
  File "setup.py", line 145, in setup_package
    from numpy.distutils.core import setup
  File "/usr/local/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/usr/local/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
    from type_check import *
  File "/usr/local/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
    import numpy.core.numeric as _nx
  File "/usr/local/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
    import multiarray
ImportError: libimf.so: cannot open shared object file: No such file or directory

libimf.so是MKL的共享库之一,我必须进行链接。 除了直接修改Numpy的__init__.py文件(我更倾向于避免这样做,因为可能有更清晰的方法),我不知道该怎么做才能将Numpy永久链接到MKL库。

感谢您的帮助!


2
д»”з»Ҷйҳ…иҜ»ldconfigзҡ„жүӢеҶҢйЎөгҖӮ - talonmies
我不明白为什么这个问题被认为是离题的...有人能解释一下吗? - PierreE
1个回答

7
感谢Talonmies的评论,我找到了解决方法!必须编辑文件/etc/ld.so.conf并添加库的路径。以下是我查找需要添加的路径的方法(非常经验性...):
每当我使用Numpy时遇到与无法导入的库相关的错误,我会按照以下方式查找此库的路径: find /opt/intel -name library.so 例如,我得到路径:/opt/intel/path/to/library.so 我将此行添加到文件/etc/ld.so.conf中:
include /etc/ld.so.conf.d/*.conf

# Manually added lines
/opt/intel/path/to/library.so

然后运行ldconfig来“链接”库!

干杯!谢谢Talonmies!


3
谢谢,当我将目录添加到ld.so.conf中时,这对我有用,而不是直接添加共享对象文件本身。 - Lucas
include /etc/ld.so.conf.d/中添加一个.conf文件不是更好吗?例如:include /etc/ld.so.conf.d/mylibs.conf,这样你就可以避免编辑include /etc/ld.so.conf,因为它会自动检测目录中的所有conf文件。 - PerroNoob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接