Устраняем ошибку "unable to execute 'gcc': No such file or directory"

Данная заметка - одна из цикла мини заметок про возникающие проблемы при работе с Python, pip и другими приложениями, используемые при разработке на языке Python. Описываемые проблемы встречаются в повседней работе системных администраторов, программистов,DevOps'ов. Непосредственно данные ошибки возникали при разработке программного комплекса Barsemon. Данный программный комплекс должен будет использоваться для мониторинга серверов, сетевого оборудования, окончания доменов и SSL сертификатов, и других критически важных объектов, приложений, оборудования. На данный момент проект находится в стадии разработки.

И так, при установке зависимостей Python могут возникать ошибки компилирования пакета(ов). Ниже представлен вывод программы инсталятора и возникающая при установке пакета ошибка.

Стоит обратить внимание, что установка пакетов, именно в этом примере, осуществляется согласно списку пакетов из файла requirements.txt. Ошибка(и) может/могут возникать как при групповой установке пакетов, так и при установке одиночного пакета.

(!)Все установки производятся на dev сервере, работающего на базе Centos 7.x и Python 3.4

Вывод программы инсталятора:

[root@client barsemon-client]# pip3 install -r requirements.txt
Collecting certifi==2017.11.5 (from -r requirements.txt (line 1))
  Using cached certifi-2017.11.5-py2.py3-none-any.whl
Collecting chardet==3.0.4 (from -r requirements.txt (line 2))
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting idna==2.6 (from -r requirements.txt (line 3))
  Using cached idna-2.6-py2.py3-none-any.whl
Collecting pycurl==7.43.0.1 (from -r requirements.txt (line 4))
  Using cached pycurl-7.43.0.1.tar.gz
Collecting requests==2.18.4 (from -r requirements.txt (line 5))
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |████████████████████████████████| 92kB 995kB/s
Collecting urllib3==1.22 (from -r requirements.txt (line 6))
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
    100% |████████████████████████████████| 133kB 1.7MB/s
Collecting var-dump==1.2 (from -r requirements.txt (line 7))
  Downloading var_dump-1.2.tar.gz
Installing collected packages: certifi, chardet, idna, pycurl, urllib3, requests, var-dump
  Running setup.py install for pycurl ... error
    Complete output from command /usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-eunr9sdz/pycurl/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-oz681jr7-record/install-record.txt --single-version-externally-managed --compile:
    Using curl-config (libcurl 7.29.0)
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.4
    creating build/lib.linux-x86_64-3.4/curl
    copying python/curl/__init__.py -> build/lib.linux-x86_64-3.4/curl
    running build_ext
    building 'pycurl' extension
    creating build/temp.linux-x86_64-3.4
    creating build/temp.linux-x86_64-3.4/src
    gcc -pthread -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DPYCURL_VERSION="7.43.0.1" -DHAVE_CURL_SSL=1 -I/usr/include/python3.4m -c src/docstrings.c -o build/temp.linux-x86_64-3.4/src/docstrings.o
    unable to execute 'gcc': No such file or directory
    error: command 'gcc' failed with exit status 1

    ----------------------------------------
Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-eunr9sdz/pycurl/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-oz681jr7-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-eunr9sdz/pycurl/

Как мы видим, установка пакетов была прервана из-за ошибки компиляции.

Ошибка говорит о необходимости установки в операционную систему пакета GCC компилятора.

Для установки пакета GCC компилятора необходимо выполнить команду:

yum install gcc -y

После установки GCC пакета, необходимо заново запустить установку пакетов Python.

pip3 install -r requirements.txt

Установка пакетов должна пройти без каких-либо ошибок.

Comments: