我正在测试一些conda环境following their tutorial here。我的困惑在于以下设置。假设我已经下载了anaconda2。然后我的conda环境在子目录anaconda2/envs
中创建。在他们的教程的第2步中,我创建了以下环境:
$ conda info --envs
# conda environments:
#
bunnies /home/daniel/anaconda2/envs/bunnies
snowflakes /home/daniel/anaconda2/envs/snowflakes
root * /home/daniel/anaconda2
其中bunnies
是python 3而snowflakes
是python 2.前一个包安装了conda create --name bunnies python=3.5 astroid babel
,这就是为什么它是python 3。
但这是我的困惑:为什么它存储在anaconda2/envs
目录中?据推测,这意味着环境共享包含在anaconda中的其他软件包的python 2版本,对吧?为了调查,我切换了环境并打印了包裹:
$ conda info --envs
# conda environments:
#
bunnies /home/daniel/anaconda2/envs/bunnies
snowflakes /home/daniel/anaconda2/envs/snowflakes
root * /home/daniel/anaconda2
$ source activate bunnies
(bunnies) $ conda list
# packages in environment at /home/daniel/anaconda2/envs/bunnies:
#
astroid 1.4.9 py35_0
babel 2.4.0 py35_0
beautifulsoup4 4.6.0 py35_0
lazy-object-proxy 1.2.2 py35_0
openssl 1.0.2l 0
pip 9.0.1 py35_1
python 3.5.3 1
pytz 2017.2 py35_0
readline 6.2 2
see 1.4.0 <pip>
setuptools 27.2.0 py35_0
six 1.10.0 py35_0
sqlite 3.13.0 0
tk 8.5.18 0
wheel 0.29.0 py35_0
wrapt 1.10.10 py35_0
xz 5.2.2 1
zlib 1.2.8 3
让我们看看当我运行ipython并导入一个不列出的软件包时会发生什么,但 与anaconda捆绑在一起。
(bunnies) $ python --version
Python 3.5.3 :: Continuum Analytics, Inc.
(bunnies) $ python
Python 3.5.3 |Continuum Analytics, Inc.| (default, Mar 6 2017, 11:58:13)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'numpy'
出现错误,因为这是python 3而不是2.但是当我切换到snowflakes
环境时,确实numpy import 正常工作,这必须是因为它指的是用anaconda 2安装的软件包,用于python 2.7。
我的问题是,为什么教程会在anaconda 2中制作python 3版本?这种做法很糟糕吗?我将分别创建anaconda2和anaconda3目录,并使每个目录中的所有环境都使用相同的python版本。有没有理由不这样做?