我正在尝试从文件创建 conda 环境environment.yml。
conda env create -f environment.yml
Run Code Online (Sandbox Code Playgroud)
这有效,但我想避免安装默认包。
我找到了标志--no-default-packages但这仅适用于conda create并且此命令不接受该environment.yml文件。
有没有办法如何使用environment.yml和不安装默认包?
编辑: 我的最终目标是创建可以打包(或环境的站点包)作为 AWS 的 lambda 的环境。但似乎 conda 安装的每个包都太多了。
例如:
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
Run Code Online (Sandbox Code Playgroud)
为什么这个命令会安装Python、pip等包?这些是networkx 的真正依赖吗?
另一方面,如果我这样做,pip install -t . networkx它会按预期安装networkx。
有没有办法使用
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具有误导性。CLI命令pip install本身是模块定义的入口点pip。等效的命令是:
python -m pip install networkx
Run Code Online (Sandbox Code Playgroud)
这清楚地表明了一个事实,即networkx如果没有python和就无法安装pip。
请记住,Conda 从一开始就被设计为对非 Python 依赖项提供更广泛的支持,从而促进与主机系统级库的更多独立性。因此,您应该预期会有更多依赖项,尤其是那些永远不会出现在仅使用 PyPI 的 Python 系统中的依赖项。