无法执行' x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

时间:2017-09-27 14:47:21

标签: linux python-2.7 gcc anaconda pysam

我正在尝试安装pysam。

执行后:

python path/to/pysam-master/setup.py build

产生此错误:

unable to execute 'x86_64-conda_cos6-linux-gnu-gcc': No such file or directory
error: command 'x86_64-conda_cos6-linux-gnu-gcc' failed with exit status 1

有类似的线程,但它们似乎都解决了我没有的问题管理员权利问题。有没有办法安装所需的文件?

免责声明:此问题来自我之前的帖子。 manually installing pysam error: "ImportError: No module named version" 但由于它可能需要采用不同的方法,因此我将其作为自己的问题。

5 个答案:

答案 0 :(得分:14)

看起来Anaconda有一个新版本(4.3.27),它将C编译器路径设置为一个不存在的可执行文件(这是一个非常令人尴尬的错误;我确定他们很快就会修复它)。我使用最新的Miniconda有一个类似的问题,使用最新的Miniconda,我使用4.3.21版本修复并确保我没有像conda update conda这样做。

请参阅https://repo.continuum.io/miniconda/,其中包含发布日期和版本。

答案 1 :(得分:6)

如果使用conda安装了R,那么在安装某些R软件包时也会收到同样的错误。(正如我所说)。

然后只需执行以下命令安装包:conda install gxx_linux-64即可使该命令可用。

来源: https://github.com/RcppCore/Rcpp/issues/770#issuecomment-346716808

答案 2 :(得分:2)

现在更新conda应该是安全的。这在linux-64的以下python包中修复:

  • 蟒-3.6.2-h0b30769_14.tar.bz2
  • 蟒-2.7.14-h931c8b0_15.tar.bz2
  • python-2.7.13-hac47a24_15.tar.bz2
  • 蟒-3.5.4-hc053d89_14.tar.bz2

问题就像Jon Riehl所描述的那样 - 我们(Anaconda,以前的Continuum)用我们使用crosstool-ng创建的新GCC包构建了我们所有的包。这个软件包没有gcc,它有一个带前缀的gcc - 你看到的缺失命令x86_64-conda_cos6-linux-gnu-gcc。这将被绑定到python中,并且使用该python构建的任何扩展都在寻找该编译器。我们已使用添加到python 3.6的_PYTHON_SYSCONFIGDATA_NAME变量修复了该问题。我们已将其移植到python 2.7和3.5。您现在只能使用默认编译器(gcc)看到python,并且必须将_PYTHON_SYSCONFIGDATA_NAME设置为适当的文件名才能使用新的编译器。设置此变量是我们将其放入编译器包的激活脚本中的内容,因此您永远不必担心它。但是,我们可能需要一两天时间才能获得新的编译器软件包,因此,如果您想使用新的编译器并需要帮助,请在conda-build问题跟踪器上发布问题。

相关代码更改位于:

答案 3 :(得分:0)

最适合我的解决方案是使用conda安装r软件包:

conda install -c r r-tidyverse 

或r-gggplot2,r-reader

还要确保安装不会因为管理员权限而失败。

它将为您节省很多痛苦

答案 4 :(得分:-3)

$PATH中的某个地方(例如~/bin),请执行

ln -sf $(which gcc) x86_64-conda_cos6-linux-gnu-gcc

不要将它放在系统目录或conda的bin目录中,并记住在上游解决问题时删除链接。 gcc --version应该是第6版。

编辑:我理解反对操纵系统路径的评论中的情绪,但也许我们可以在背诵教义之前对实际案例使用一点批判性思维。我们上面的命令实际上做了什么?仅仅将名为x86_64-conda_cos6-linux-gnu-gcc的可执行文件(符号链接)放在个人~/bin目录中。

如果在个人~/bin目录中放置某些东西会破坏未来conda(在它修复C编译器路径以指向它嵌入的gcc之后),那么这将是conda的错误。这个详细命名的编译器是否会与其他任何内容混淆?不太可能。即使有些东西确实捡起来,它毕竟只是你的系统gcc ......