如果我还指定它应该使用python 2,conda python不使用我尝试安装的numpy版本

conda python isn't using the numpy version I try install if I also specify that it should use python 2

我尝试使用Condas来安装一个使用python 2.7和numpy版本1.10的环境。

我试图创造这样的环境

1
 conda create -n test2 python=2.7 numpy=1.10

它声称要安装我指定的软件

The following NEW packages will be INSTALLED:

1
2
3
4
5
6
7
8
9
10
11
mkl:        11.3.3-0    
numpy:      1.10.4-py27_2
openssl:    1.0.2l-0    
pip:        9.0.1-py27_1
python:     2.7.13-0    
readline:   6.2-2        
setuptools: 27.2.0-py27_0
sqlite:     3.13.0-0    
tk:         8.5.18-0    
wheel:      0.29.0-py27_0
zlib:       1.2.8-3

然后激活它并运行python

1
2
 source activate test2
 python

它告诉我我正在使用python版本2.7.13,然后我尝试检查numpy版本号。

1
2
 import numpy
 numpy.version.version

它告诉我我有版本

'1.13.0'

这不是我指定的版本。另一方面,如果我跳过指定python版本,它将安装python 3,但numpy的正确版本(1.10.4)

你对这里发生的事有什么看法吗?此外,我如何修复这个问题?谢谢!

编辑:根据uvar的注释

1
 conda create -n test4 python=2.7 numpy=1.10 --no-deps

告诉我

The following NEW packages will be INSTALLED:

1
2
numpy:  1.10.4-py27_2
python: 2.7.13-0

但是如果我检查了numpy版本号,它会告诉我我又在运行1.13.0了。

编辑2(再次响应uvar的查询):

1
 conda list -n test2

收益率

# packages in environment at /home/ohnoplus/anaconda3/envs/test2:

#

1
2
3
4
5
6
7
8
9
10
11
 mkl                       11.3.3                        0  
 numpy                     1.10.4                   py27_2  
 openssl                   1.0.2l                        0
 pip                       9.0.1                    py27_1  
 python                    2.7.13                        0  
 readline                  6.2                           2  
 setuptools                27.2.0                   py27_0  
 sqlite                    3.13.0                        0  
 tk                        8.5.18                        0  
 wheel                     0.29.0                   py27_0  
 zlib                      1.2.8                         3

编辑3:如果我是source activate test2,然后在python import numpynumpy.__file__的内部,我会得到以下信息

'/home/ohnoplus/.local/lib/python2.7/site-packages/numpy/__init__.pyc'

同时,如果在python外部,但在test2内部,则我会执行echo $PATH

我得到

/home/ohnoplus/anaconda3/envs/test2/bin:/home/ohnoplus/anaconda3/bin:/home/ohnoplus/bin:/home/ohnoplus/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

编辑4:@uvar和@mseift指出我应该让路径变量指向正确的位置。我将尝试纠正这一点,但我有几个问题:

我注意到test2中的python sys.path似乎在寻找numpy的正确位置(如果我查看sys.path的话)。

1
2
 import sys
 print (sys.path)

['', '/home/ohnoplus/anaconda3/envs/test2/lib/python27.zip', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/plat-linux2', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/lib-tk', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/lib-old', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/lib-dynload', '/home/ohnoplus/.local/lib/python2.7/site-packages', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/site-packages', '/home/ohnoplus/anaconda3/envs/test2/lib/python2.7/site-packages/setuptools-27.2.0-py2.7.egg']

< /块引用>

我应该更新命令行中引用的$path,这个sys.path变量,还是其他什么?


好啊。知道了!当我运行sys.path时,它在查找"anaconda3/envs/test2/lib/python2.7/site packages"之前查找".local/lib/python2.7/site packages"

我认为我从未在.local中使用过python版本,所以我只是将python2.7目录移出~/.local/lib。这似乎解决了问题。现在,当我导入numpy时,版本如预期的那样。

参考文献:下面的讨论,连同uvar和mseift的评论,指出了我解决这个问题的方向。

网址:https://github.com/conda/conda/issues/448