【问题标题】:Piping explicit conda list管道显式 conda 列表
【发布时间】:2016-11-10 13:16:36
【问题描述】:

我需要管道一些 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

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

【问题讨论】:

  • 我无法在使用 Python 3 的 Ubuntu 16.04 系统上重现此问题。您使用的是什么操作系统?
  • 我在 mac osx 上试过这个。我会尝试使用 linux
  • 但是您的conda info 显示linux-64? FWIW,我也无法在 OS X 上重现它,但同样,它的 Miniconda 3
  • 对不起,我弄错了。你是对的,我在 Linux 上执行了命令。然后我使用这些信息在 mac 上安装 conda 包,这就是我感到困惑的原因。

标签: python pipe conda


【解决方案1】:

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

现在有一个潜在的解决方法:

$ conda list --explicit &gt; /tmp/conda-explicit-output &amp;&amp; head -n 15 /tmp/conda-explicit-output &amp;&amp; rm /tmp/conda-explicit-output

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

【讨论】:

  • 我猜你解决了!所以一般来说这不是管道问题。如果我这样做$ conda list --explicit | wc -l,我会得到297。所以现在:$ conda list --explicit | head -n 297 返回正确的结果。实际上我使用head 进行测试,我本身并不需要它。所以我不需要“丑陋”的代码;)谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
相关资源
最近更新 更多