sudo pip3安装numpy不尊重〜/ .numpy-site.cfg

时间:2016-04-08 04:16:26

标签: python numpy scipy pip sudo

我正在尝试使用pip3在python3上安装numpy和scipy。我想使用MKL,所以我在~/.numpy-site.cfg中已经指定了(建议herehere):

[mkl]
library_dirs = /opt/intel/mkl/lib/intel64
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
extra_compile_args = -march=native

然后我通过

安装numpy(成功)
$ sudo pip3 install numpy

但是,MKL没有出现在配置中!

>>> np.show_config()
...
mkl_info:
  NOT AVAILABLE
...

随后安装scipy失败(按预期)

numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

然而,当我在同一台机器上的virtualenv中安装numpy和scipy而没有改变任何其他内容时,发现MKL ,并且scipy工作正常。

我的第一个猜测是sudo没有拿起$HOME,但是sudo echo $HOME正确地返回了我的主目录。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

事实证明我的猜测确实是正确的。 sudo 不是使用权限$HOMEsudo echo $HOME有效,因为bash在调用sudo运行命令之前扩展了$HOME

以下测试可以解决这个问题:

# In test.sh
echo "$HOME"

现在我得到了

$ sudo bash test.sh
/root

确认$HOME不正确。事实证明,在/ etc / sudoers(always_set_home和env_reset)中设置了一堆设置,这意味着sudo -E bash test.sh也没有效果。

我终于用

安装了它
$ sudo HOME=/path/to/my/home pip3 install numpy

有效。