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

标签 python linux numpy shared-libraries intel-mkl

<分区>

我使用 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 库.

感谢您的帮助!

最佳答案

感谢 Talonmies 的评论,我找到了这样做的方法! 必须编辑文件 /etc/ld.so.conf 并添加库的路径。 以下是我如何找到需要添加的路径(这是非常有经验的......):

每当我使用与无法导入的库相关的 Numpy 时遇到错误,我都会通过这种方式查找该库的路径:

找到/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!

关于python - 如何在 Linux 中将 MKL 库永久链接到 Numpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267445/

相关文章:

c++ - 在 Linux 中从单独的单线程进程生成多线程进程的问题

python - 基于现有列追加新列

python - Python 的 VLFeat 安装

创建巨大对象后,Python 在函数结束时挂起数小时

linux - 在 Linux 设备驱动程序中使用 GPL 许可证的重要性

python - 是否可以在pygame中使用简单的旋转矩阵来模拟圆形轨道?

python - 将 hstack 应用于矩阵数组

python - 停止/删除在 SQLAlchemy 中默认插入 NULL

python - 将文件中的一行文本加载到 Kivy 标签

linux - "Memory is below 1MB, or missing a M/G at the end of the memory specification?"是什么原因