根据文档,如果我用
conda env export > file.yml我能够和其他人分享环境。为了获得更好的跨平台兼容性,更好的方法是:
conda env export --from-history > file.yml只列出显式请求的包(而不是它们相关的依赖项)。
这就是我所做的,我用第二个命令创建了一个需求yml文件。下面是:
name: torch
channels:
- defaults
dependencies:
- python=3.8
- humanize
- nltk
- pandas
- lxml
- numpy
- bs4
- fire
- neptune-client
- tqdm
- pyyaml
- torchaudio
- pytorch
- cudatoolkit=11.3
- torchvision在这些包中,有些是从通道conda-forge安装的:通道似乎在yaml文件中丢失。
实际上,如果我尝试使用该文件来克隆环境(同一台机器):
conda env create -n torch2 --file=file.yml从conda-forge安装的软件包(我显式地安装于conda- from -client和fire)得到了一个错误:
Collecting package metadata (repodata.json): done
Solving environment: failed
ResolvePackageNotFound:
- torchaudio
- neptune-client
- fire然而,似乎通道应该包括在yml中。例如,我读到的在这个github问题页面上:
Currently, conda env export does include channels information.这就结束了这个问题。
我遗漏了什么?
注:电筒安装时
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch从官方网页上。
发布于 2022-02-21 05:54:23
我遗漏了什么?
文档是错误的,--或者是误导性的(最好的),当conda env export --from-history导出安装包的通道,甚至是任何通道的时候。这不是你得到的行为,也不是我自己得到的:
$ conda env export | head -n 8
name: smithy
channels:
- bioconda
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_gnu
$ conda env export --from-history | head -n 8
name: smithy
channels:
- defaults
dependencies:
- mamba
- constructor
- cookiecutter
- conda-build请注意,conda env export确实包括通道信息,但是以一种高度固定的方式,这几乎保证不能跨平台工作。所以这对你的用例是行不通的。我不确定这是错误还是疏忽,但它显然没有为用户产生想要的结果。
现在给出一个关于如何进行的(固执己见)的建议:你最好的选择是自己半手动地管理一个YAML文件,并把它作为一个单一的真相来源。看起来您可以使用name: torch ...文件作为起点,在通道中添加一些其他细节。不要忘记,您可以使用channel::package语法la将单个包绑定到通道上。
name: torch
channels:
- defaults
- conda-forge
- torch
dependencies:
- python=3.8
<SNIP>
- pytorch::torchaudio
- pytorch::pytorch
- pytorch::cudatoolkit=11.3
- pytorch::torchvisionhttps://stackoverflow.com/questions/71197980
复制相似问题