Не удалось выполнить '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: " ИмпортError: нет модуля с именем версии" Но поскольку это может потребовать другого подхода, я поставил вопрос сам по себе.

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

  • питон-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

Проблема была описана Джоном Рилем - мы (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, если вы хотите использовать новые компиляторы и вам нужна помощь при запуске.

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

Ответ 4

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

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

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

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

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