管道显式 conda 列表

Piping explicit conda list

我需要通过管道传输一些 conda 命令:

$ conda list --export | head -n 3
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64

这很好用。但是管道显式列表失败:

$ conda list --explicit | head -n 3
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
An unexpected error has occurred.
Please consider posting the following information to the
conda GitHub issue tracker at:

    https://github.com/conda/conda/issues



Current conda install:

               platform : linux-64
          conda version : 4.2.12
       conda is private : False
      conda-env version : 4.2.12
    conda-build version : not installed
         python version : 2.7.12.final.0
       requests version : 2.11.1
       root environment : /home/me/miniconda3  (writable)
    default environment : /home/me/miniconda3
       envs directories : /home/me/miniconda3/envs
          package cache : /home/me/miniconda3/pkgs
           channel URLs : https://repo.continuum.io/pkgs/free/linux-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/pro/linux-64
                          https://repo.continuum.io/pkgs/pro/noarch
            config file : None
           offline mode : False



`$ /home/me/miniconda3/bin/conda list --explicit`

回溯是(抱歉,它不允许我把它放在代码标签中...):

Traceback (most recent call last):    
File "/home/me/miniconda3/lib/python2.7/site-packages/conda/exceptions.py", line 479, in conda_exception_handler
return_value = func(*args, **kwargs)

File "/home/me/miniconda3/lib/python2.7/site-packages/conda/cli/main.py", line 145, in _main
  exit_code = args.func(args, p)

File "/home/me/miniconda3/lib/python2.7/site-packages/conda/cli/main_list.py", line 213, in execute
  print_explicit(prefix, args.md5)

File "/home/me/miniconda3/lib/python2.7/site-packages/conda/cli/main_list.py", line 190, in print_explicit
  print(url + ('#%s' % md5 if add_md5 and md5 else ''))

IOError: [Errno 32] Broken pipe

这可能是一个错误吧?没有管道它工作正常。

发生管道损坏是因为 head 在获得指示显示的 3 行后关闭输出流。您会注意到您在输出中得到了这三行。下次 conda 尝试打印时,它不能因为 head 关闭了管道。这就是导致此异常的原因。这不是 conda 的问题。在此处查看有关 python 中管道异常的更多信息:IOError: [Errno 32] Broken pipe: Python

现在可以解决以下问题:

$ conda list --explicit > /tmp/conda-explicit-output && head -n 15 /tmp/conda-explicit-output && rm /tmp/conda-explicit-output

是的,它很丑陋,但它可能会完成工作。