Невозможно выполнить 'x86_64-conda_cos6-linux-gnu-gcc': нет такого файла или каталога (установка 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

Существуют похожие темы, но все они, похоже, решают проблему с правами администратора, которой у меня нет. Есть ли способ установить необходимые файлы?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот вопрос возник из моего предыдущего поста. ручная установка ошибки pysam: "ImportError: нет модуля с именем version". Но так как это может потребовать другого подхода, я сделал это своим собственным вопросом.

6 ответов

Решение

Похоже, что у Anaconda появился новый выпуск (4.3.27), в котором путь к компилятору C устанавливается на несуществующий исполняемый файл (довольно смущающая ошибка; я уверен, что они исправят ее в ближайшее время). У меня была похожая проблема с установкой pip с использованием последней версии Miniconda, которую я исправил с помощью версии 4.3.21 и убедился, что я не делал ничего подобного conda update conda,

См. https://repo.continuum.io/miniconda/ где указаны даты выпуска и версии.

Вы также можете получить ту же ошибку при установке некоторых пакетов R, если R был установлен с использованием conda (как я сделал).

Затем просто установите пакет, выполнив: conda install gxx_linux-64 чтобы эта команда была доступна.

Источник: https://github.com/RcppCore/Rcpp/issues/770

Теперь должно быть безопасно обновить conda. Это исправлено в следующих пакетах Python для Linux-64:

  • питон-3.6.2-h0b30769_14.tar.bz2
  • питон-2.7.14-h931c8b0_15.tar.bz2
  • питон-2.7.13-hac47a24_15.tar.bz2
  • питон-3.5.4-hc053d89_14.tar.bz2

Проблема заключалась в том, как описал Джон Рил, - мы (Anaconda, ранее Continuum) собирали все наши пакеты с помощью нового пакета GCC, который мы создали с помощью crosstool-ng. В этом пакете нет gcc, в нем есть префикс gcc - отсутствующая команда, которую вы видите, x86_64-conda_cos6-linux-gnu-gcc, Это запекается в python, и любое расширение, созданное с этим python, ищет этот компилятор. Мы устранили проблему, используя переменную _PYTHON_SYSCONFIGDATA_NAME, которая была добавлена ​​в python 3.6. Мы перенесли это в python 2.7 и 3.5. Теперь вы будете когда-либо видеть Python только с использованием компиляторов по умолчанию (gcc), и вы должны установить для _PYTHON_SYSCONFIGDATA_NAME соответствующее имя файла, чтобы использовать новые компиляторы. Установка этой переменной - это то, что мы добавим в сценарии активации для пакета компилятора, поэтому вам никогда не придется об этом беспокоиться. Однако на то, чтобы выпустить новые пакеты компилятора, у нас может уйти день или два, поэтому размещайте сообщения о проблемах на трекере conda-build, если вы хотите использовать новые компиляторы и вам нужна помощь для начала работы.

Соответствующие изменения кода:

После обновления Golang до 1.19.1 я начал получать:

       # runtime/cgo 
cgo: C compiler "x86_64-conda-linux-gnu-cc" not found: exec: "x86_64-conda-linux-gnu-cc": executable file not found in $PATH

Установка gcc_linux-64 с того же канала разрешила проблему:

      conda install -c anaconda gcc_linux-64

Решение, которое сработало для меня, заключалось в использовании conda для установки пакетов r:

conda install -c r r-tidyverse 

или r-gggplot2, r-readr

Также убедитесь, что установка не завершается ошибкой из-за прав администратора.

Это избавит вас от боли

Где-то в вашем $PATH (например, ~/bin), делать

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

Не помещайте это в системный каталог или каталог bin компании conda, и не забудьте удалить ссылку, когда проблема будет решена в восходящем направлении. gcc --version должна быть версия 6.

РЕДАКТИРОВАТЬ: Я понимаю чувство в комментариях против манипулирования системными путями, но, возможно, мы можем использовать немного критического мышления для фактического случая в руках, прежде чем читать учение. Что на самом деле мы сделали с командой выше? Ничего больше, чем размещение исполняемого файла (символическая ссылка) с именем x86_64-conda_cos6-linux-gnu-gcc в личном ~/bin каталог.

Если положить что-то в личную ~/bin каталог сломал будущее conda (после исправления пути к компилятору C, указывающего на gcc это встраивает), то это будет ошибка с conda, Будет ли существование этого многословно названного компилятора мешать чему-либо еще? Вряд ли тоже. Даже если что-то подхватило, это просто ваша система gcc в конце концов...

Другие вопросы по тегам