17

我正在尝试安装 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

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

免责声明:这个问题来自我以前的帖子。 手动安装 pysam 错误:“ImportError: No module named version” 但由于它可能需要不同的方法,所以我将其作为一个问题。

4

5 回答 5

20

如果 R 是使用 conda 安装的(就像我一样),在安装某些 R 包时,您也可能会收到相同的错误。

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

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

于 2017-12-11T23:29:35.650 回答
15

看起来 Anaconda 有一个新版本(4.3.27),它将 C 编译器路径设置为不存在的可执行文件(相当尴尬的错误;我相信他们会很快修复它)。我在使用最新的 Miniconda 安装 pip 时遇到了类似的问题,我使用 4.3.21 版本修复了这个问题,并确保我没有做类似conda update conda.

请参阅具有发布日期和版本的https://repo.continuum.io/miniconda/ 。

于 2017-09-27T21:55:11.467 回答
3

现在应该可以安全地更新 conda。这在 linux-64 的以下 python 包中得到了修复:

  • python-3.6.2-h0b30769_14.tar.bz2
  • python-2.7.14-h931c8b0_15.tar.bz2
  • python-2.7.13-hac47a24_15.tar.bz2
  • python-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 问题跟踪器上发布问题。

相关代码更改位于:

于 2017-09-29T23:43:27.033 回答
0

对我有用的解决方案是使用 conda 安装 r 包:

conda install -c r r-tidyverse 

或 r-gggplot2, r-readr

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

它将为您节省很多痛苦

于 2020-04-26T19:22:27.360 回答
-1

在你的某个地方$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毕竟只是你的系统......

于 2017-09-28T04:33:59.280 回答