Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unable to execute 'gcc': No such file or directory error: command 'gcc' failed with exit status 1 #418

Closed
arprasto opened this issue Mar 23, 2018 · 17 comments
Assignees
Labels

Comments

@arprasto
Copy link

arprasto commented Mar 23, 2018

Expected behavior

pip install --ignore-installed six watson-developer-cloud Dockerfile RUN should build the image successfully.

Actual behavior

pip install --ignore-installed six watson-developer-cloud has dependency on gcc. Therefore when you give it in Dockerfile than docker image build will get failed with below error:

unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1

Steps to reproduce the problem

step 1: create a Dockerfile with these below contents:

FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
RUN pip install --ignore-installed six watson-developer-cloud
EXPOSE 80
CMD ["python", "app.py"]

requirements.txt:
Flask

step 2: execute below cmd to create docker image:
docker image build -t arprasto/python-hello-world:v2 .

However if you add below 2 lines to Dockerfile than issue resolved:

RUN apt-get update
RUN apt-get -y install gcc

Therefore this need to be added to Readme file.

Code snippet (Note: Do not paste your credentials)

from flask import Flask
import os
import socket
import json
from watson_developer_cloud import VisualRecognitionV3

# Connect to Redis
app = Flask(__name__)
cred = "api_key_json"

@app.route("/")
def hello():
    img_url="http://www.dogbreedslist.info/uploads/allimg/dog-pictures/Rottweiler-1.jpg"
    visual_rec_svc = VisualRecognitionV3(version="2016-05-20",api_key=cred.get('api_key'))
    clazes = visual_rec_svc.classify(url=img_url,parameters=json.dumps({
            'classifier_ids': ['fruits_1462128776','SatelliteModel_6242312846','default'],
            'threshold': 0.6
        }))

    html = "<h3>Hello {name}!</h3>" \
            "<h2> <a href='{img_url}'> this is the img </a> </h2>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "{filecontent}"
    return html.format(name=os.getenv("NAME", "there"), img_url=img_url, hostname=socket.gethostname(),filecontent=clazes)

if __name__ == "__main__":
    app.run(host='127.0.0.1', port=80)

python sdk version

python2.7.13_virtual

python version

python2.7.13_virtual

@ammardodin
Copy link
Contributor

ammardodin commented Mar 23, 2018

@arprasto Thanks for reporting the issue. The WDC library has a dependency on cryptography lib which needs gcc. The reason you're seeing this error is because you're using the 2.7-slim image which removes gcc to keep it as small as possible. With the slim image, you'll need to install any build dependencies that you require for your pip installs.

If size is not so much of a concern, you might consider using a different image. With the standard 2.7 image, I was able to build successfully.

Since gcc is a build dependency for CPython, I think it is implicitly assumed to exist in most environments if CPython is present. But maybe we can add a section for Docker-based installations.

@arprasto
Copy link
Author

@ammardodin thanks for your reply. I have a query on "With the 2.7 image, I was able to build successfully." What did you give in your Dockerfile as opposed to i gave "FROM python:2.7-slim" ??

@ammardodin
Copy link
Contributor

@arprasto I used FROM python:2.7

@arprasto
Copy link
Author

@ammardodin I doubt if we really need 750MB image to run just hello world application. But yes i was too able to build the image using FROM python:2.7.

If you please update the Readme file according to this or else you can close this tkt.

Thanks
Arpit

@arprasto arprasto changed the title need to update readme with Dockerfile specification. unable to execute 'gcc': No such file or directory error: command 'gcc' failed with exit status 1 Mar 26, 2018
@ammardodin
Copy link
Contributor

@arprasto I understand your point of view. I guess we can add a section in the README for Docker-based installations :).

@ammardodin ammardodin self-assigned this Mar 26, 2018
@Akashdesarda
Copy link

You need to install it first by using the following command
sudo apt-get install gcc

@rmishra258
Copy link

You need to install it first by using the following command
sudo apt-get install gcc

thanks, really hlpful

@Naviden
Copy link

Naviden commented Aug 14, 2020

You need to install it first by using the following command
sudo apt-get install gcc

in my case it was necesseray to do also this:
sudo apt-get install g++

@teki-b
Copy link

teki-b commented Aug 14, 2020

You need to install it first by using the following command
sudo apt-get install gcc

in my case it was necesseray to do also this:
sudo apt-get install g++

thanks naviden!

@ululh
Copy link

ululh commented Dec 27, 2020

@ammardodin I doubt if we really need 750MB image to run just hello world application. But yes i was too able to build the image using FROM python:2.7.

If you please update the Readme file according to this or else you can close this tkt.

Thanks
Arpit

Hello
I know it's a bit old but in case someone else stumbles upon this....
What you need is multi-stage container build : build dependencies within a full image and then copy to a slim image. Described in details here : https://www.docker.com/blog/containerized-python-development-part-1/

@aktaseren
Copy link

I had similar issue on my deployment of a python app to Nvidia Nano. Based on this, there were two errors in my dockerfile. 1st one was related to using slim version of python 3.6.13. 2nd one was that I didn't install gcc package. I recognized that both of these were needed to install Matplotlib that I need in my app

Following commands solved my issues. The deployment was succesfull.

FROM nvcr.io/nvidia/l4t-base:r32.4.3 COPY --from=python:3.6.13 / /

RUN apt-get update && apt-get upgrade -y && apt-get install gcc

@hw26
Copy link

hw26 commented Oct 11, 2021

I have a similar issue when building docker image for aws lambda: aws/aws-lambda-base-images#25
However I am using base image for python 3.8, as suggested in the aws manual page,
Dockerfile:

FROM public.ecr.aws/lambda/python:3.9

# Copy function code
COPY payment_lambda_function.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt  .
RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "payment_lambda_function.payment_lambda_handler" ]

so I am not sure why it is creating the issue...

@GoingMyWay
Copy link

For conda users, please https://anaconda.org/anaconda/gcc_linux-64 to install gcc. See this link: https://anaconda.org/anaconda/gcc_linux-64

@AlonHarmon
Copy link

@arprasto Thanks for reporting the issue. The WDC library has a dependency on cryptography lib which needs gcc. The reason you're seeing this error is because you're using the 2.7-slim image which removes gcc to keep it as small as possible. With the slim image, you'll need to install any build dependencies that you require for your pip installs.

If size is not so much of a concern, you might consider using a different image. With the standard 2.7 image, I was able to build successfully.

Since gcc is a build dependency for CPython, I think it is implicitly assumed to exist in most environments if CPython is present. But maybe we can add a section for Docker-based installations.

I'm so in love with u RT

@AKNOUCHEanis
Copy link

AKNOUCHEanis commented Mar 27, 2023

This works on aws sagemaker notebook :

apt-get install g++-6 --yes    
apt-get install gcc --yes

@lolwarmaze
Copy link

This worked for me on wsl -
sudo apt-get install build-essential

@berkkant
Copy link

@arprasto Thanks for reporting the issue. The WDC library has a dependency on cryptography lib which needs gcc. The reason you're seeing this error is because you're using the 2.7-slim image which removes gcc to keep it as small as possible. With the slim image, you'll need to install any build dependencies that you require for your pip installs.

If size is not so much of a concern, you might consider using a different image. With the standard 2.7 image, I was able to build successfully.

Since gcc is a build dependency for CPython, I think it is implicitly assumed to exist in most environments if CPython is present. But maybe we can add a section for Docker-based installations.

You saved me king

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests