从Scipy使用Atlas


13

我安装了Ubuntu 12.04 64位。我需要使用python和scipy,我安装了它们并在运行测试时:

python -c "import scipy; scipy.test()"

我收到消息:

ImportError:libatlas.so.3gf:无法打开共享对象文件:没有此类文件或目录

但是,我在目录下安装了libatlas库/usr/lib/atlas-base。我知道我可以直接在下面复制文件/usr/lib,但是我不知道如何设置scipy以使用来自的库usr/lib/atlas-base


请不要交叉张贴。
卡森(Karlson)2012年

好的,现在删除。
lmsasu 2012年

Answers:


19

您无需在任何地方复制任何内容。

您应该将地图集库添加到ld要搜索的位置列表中。

在目录中,/etc/ld.so.conf.d您可以添加文件atlas-lib.conf。该文件应包含的目录libatlas.so.3gf,即/usr/lib/atlas-base

您可以通过运行

echo "/usr/lib/atlas-base" | sudo tee /etc/ld.so.conf.d/atlas-lib.conf

终于跑

sudo ldconfig

更新,ld以便它知道此新文件。

或者,您可以设置LD_LIBRARY_PATH为在运行时包括库的路径,并且该路径应在SciPy中可用。


我不确定atlas-lib.conf是否有帮助,但是LD_LIBRARY_PATH可以解决问题。
lmsasu 2012年

1
@lmsasu当你创建一个文件,你需要运行sudo ldconfig,使它活动
卡尔森

如果您没有root用户访问权限,最好的方法是什么?如果您愿意virtualenv,在这种情况下您将如何做?
阿尔伯特

1
@Albert Using virtualenv是一个完全独立的主题,但是没有root用户访问权限,您可以LD_LIBRARY_PATH按照答案中提到的适当方式进行设置。
卡森2015年

这种事情应该由numpy / scipy或libatlas-dev软件包处理,不是吗?我有一个有趣的情况,系统numpy 1.9.1可以正常工作,但是virtualenv中的numpy 1.9.2会出现此问题。无论如何,您的解决方案已将其修复。谢谢。
drevicko 2015年

1

对我而言,使用virtualenv,export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}.bashrc文件末尾修复了该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.