2016-11-10 39 views
0

我需要一些管道命令畅达:管道明确畅达列表

$ 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 

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

+0

我无法在Python 3的Ubuntu 16.04系统上重现此操作。您使用的是什么操作系统? – darthbith

+0

我在mac osx上试过这个。我试着用linux – kaligne

+0

但是你的'conda info'显示'linux-64'? FWIW,我也无法在OS X上重现这一点,但同样,它的Miniconda 3 – darthbith

回答

1

由于head正在关闭输出流,一旦它获得了指示显示的3行,就会发生断管。你会注意到你的输出中有三行。 conda下次尝试打印时,它不能,因为head已关闭管道。这是什么导致这个例外。这不是conda的问题。有关于蟒蛇破管例外看看这里了解更多信息: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

没错这就是很丑陋,但它可能会完成这项工作。

+0

我想你解决了它!所以一般来说这不是一个管道问题。如果我做'$ conda list --explicit | wc -l'我得到'297'。所以现在:'$ conda list --explicit |头-n 297'返回正确的结果。其实我用'head'来测试,本身并不需要它。所以我不需要“丑陋”的代码;)THANKs! – kaligne