我通过键入创建虚拟环境mdpenv
$ conda create --name mdpenv
我将其激活为
$ source /usr/local/anaconda3/bin/activate mdpenv
我尝试列出此环境中安装的所有软件包,我希望这些软件包与基本环境相同,但我什么也没得到:
(mdpenv) $ conda list
# packages in environment at ~/.conda/envs/mdpenv:
#
# Name Version Build Channel
但是,我显然已经安装了许多软件包,例如:
(mdpenv) $ python
>>> import numpy
>>> import scipy
>>> import pandas
为什么我没有获得我的新虚拟环境mdpenv
所暴露的软件包的列表?
答案 0 :(得分:1)
Conda环境通常带有默认软件包。如果您想要一个干净的环境,请执行以下操作:
conda create --no-default-packages -n myenv python=3.6
这将创建一个没有默认程序包的干净环境。环境不是您的基础的克隆。如果您希望所有内容都基于您的环境,则应该克隆base。
conda create --name base --clone myenv
您可以通过编辑.condarc文件在你的home目录将自动创建.condarc创建一个新的环境时,改变默认包行为安装在你第一次运行:
conda config
配置遵循YAML语法。使用您选择的编辑器,导航到:
create_default_packages:
- pip
- ipython
- numpy
...
您可以删除或添加您希望被包括在默认环境下创建的软件包。
答案 1 :(得分:0)
在外壳中(在终端中)键入python
时,它将在存储在名为PATH
的环境变量中的目录中查找该文件。您可以通过输入echo $PATH
来查看此变量的值。
激活conda环境(包括基本环境)时,将存储安装在环境中的可执行文件的目录添加到PATH
变量中。因此,在激活基本环境后,您会看到类似
/path/to/anaconda/bin:/usr/local/bin:...
但是,当您激活环境时,conda会将基本环境留在PATH
上,而只是将新环境添加到最前面,例如
/path/to/anaconda/envs/mdpenv/bin:/path/to/anaconda/bin:/usr/local/bin:...
现在,当您创建一个空环境时,conda根本不会安装任何软件包(因此,空的conda list
输出)。但是,基本环境中的python
仍然存在于您的PATH
上,因此,当您键入python
时,shell将找到安装在基本环境中的Python,并且该Python会加载所有基本环境中安装的软件包。
通过检查Python使用的可执行文件和Python导入包的路径来测试此行为很容易:
>>> import sys
>>> print(sys.executable)
/path/to/anaconda/bin/python
>>> print(sys.path)
['', '/path/to/anaconda/lib/python37.zip', ...]
如果将python
安装到新环境中,则会发现您无法导入任何软件包(因为在该环境中没有安装Python以外的任何东西)