Не удалось выполнить '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
в конце концов...