从没有默认包的文件创建conda环境

时间:2018-01-24 15:48:20

标签: python conda

我正在尝试从文件environment.yml创建conda环境。

conda env create -f environment.yml

这有效,但我想避免安装默认包

我找到了标志 - no-default-packages ,但这仅适用于conda create,此命令不接受environment.yml文件。

有没有办法如何使用environment.yml而不安装默认包?

修改 我的最终目标是创建可以打包的环境(或环境的 site-packages )作为AWS的lambda。但似乎conda正在为每个包安装太多。

E.g:

bash-4.2# conda create --name test
bash-4.2# source activate test
(test) bash-4.2# conda install networkx
Fetching package metadata .........
Solving package specifications: .

Package plan for installation in environment /root/miniconda3/envs/test:

The following NEW packages will be INSTALLED:

    certifi:    2016.2.28-py36_0
    decorator:  4.1.2-py36_0
    networkx:   1.11-py36_0
    openssl:    1.0.2l-0
    pip:        9.0.1-py36_1
    python:     3.6.2-0
    readline:   6.2-2
    setuptools: 36.4.0-py36_1
    sqlite:     3.13.0-0
    tk:         8.5.18-0
    wheel:      0.29.0-py36_0
    xz:         5.2.3-0
    zlib:       1.2.11-0

为什么此命令会安装 Python pip 和其他软件包?这些是 networkx 的真正依赖吗?

另一方面,如果我pip install -t . networkx,它会按预期安装 networkx

2 个答案:

答案 0 :(得分:0)

有没有办法使用environment.yml而不安装默认软件包?

conda create命令使用create_default_packagesconda env create已经根据设计忽略了create_default_packages配置。

例如,我刚刚检查了将git添加到默认软件包中,然后从YAML创建了一个环境,其中仅将wget作为依赖项,而没有安装git


该命令为什么要安装Python,pip和其他软件包?这些是networkx的真正依赖项吗?

是的,这些是实际的依赖关系。它们可能是依赖关系的依存关系(依此类推),但是根据软件包构建器的安装和运行networkx,它们是必需的。


...如果我执行pip install -t . networkx,它只会安装networkx

pip install的比较具有误导性。 pip install CLI命令本身是pip模块定义的入口点。等效命令为:

python -m pip install networkx

这明确表明了一个事实,即如果没有networkxpython,就无法安装pip

请记住,Conda从一开始就被设计为对非Python依赖项提供更广泛的支持,从而促进与主机系统级库的更多独立性。因此,您应该期望会有更多的依赖项,尤其是那些在仅使用PyPI的系统Python中永远不会出现的依赖项。

答案 1 :(得分:0)

这些包是定义核心 Anaconda 依赖项的 Anaconda metapackage 的一部分。