我正在尝试从文件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 。
答案 0 :(得分:0)
有没有办法使用
environment.yml
而不安装默认软件包?
仅conda create
命令使用create_default_packages
。 conda 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
这明确表明了一个事实,即如果没有networkx
和python
,就无法安装pip
。
请记住,Conda从一开始就被设计为对非Python依赖项提供更广泛的支持,从而促进与主机系统级库的更多独立性。因此,您应该期望会有更多的依赖项,尤其是那些在仅使用PyPI的系统Python中永远不会出现的依赖项。
答案 1 :(得分:0)
这些包是定义核心 Anaconda 依赖项的 Anaconda metapackage 的一部分。