在设置存储库时,我经常会从某人通过管道
conda list
到requirements.txt 文件中获得许多包的列表。鉴于我有不同的固定软件包(例如 python、cuda),我经常需要安装相同的软件包而不附带指定的版本。如果您只需向 Conda 提供软件包名称列表,Conda 就能很好地找出哪些软件包版本与您固定的软件包兼容。想象一下,有人在我们的共享计算机上设置了 conda env,而我想根据他们的环境构建我自己的环境。有没有一个解决方案1(也许是用于构建这些conda list
输出的曼巴/康达属性),我可以利用它来获取要安装的软件包列表(不包含其版本和频道等)?
截断的
conda list
输出示例:
...
libstdcxx-ng 13.1.0 hfd8a6a1_0 conda-forge
libuuid 2.38.1 h0b41bf4_0 conda-forge
libxml2 2.11.4 h0d562d8_0 conda-forge
libzlib 1.2.13 hd590300_5 conda-forge
lz4-c 1.9.4 hcb278e6_0 conda-forge
lzo 2.10 h516909a_1000 conda-forge
...
pluggy 1.2.0 pyhd8ed1ab_0 conda-forge
psutil 5.9.5 py311h2582759_0 conda-forge
...
... libstdcxx-ng libuuid libxml2 libzlib lz4-c lzo ... pluggy psutil ...
1 理想情况下,这不会涉及复制粘贴或正则表达式。
尝试使用 awk 吗?仅适用于 Linux/macOS:
您可以尝试将 conda 列表输出通过管道传输到 awk 中,以仅提取第一个所需的列:
conda list | awk '{print $1}' | tail -n +4
这应该有效