18
votes

I got an error,Failed building wheel for uwsgi. My environment is Ubuntu,now I wanna install uwsgi,so I run command pip install uwsgi.But error happens

 Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-build-9t06jm4_/uwsgi/setup.py", line 126, in <module>
      distclass=uWSGIDistribution,
    File "/home/ubuntu/anaconda3/lib/python3.5/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py", line 955, in run_commands
      self.run_command(cmd)
    File "/home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py", line 974, in run_command
      cmd_obj.run()
    File "/home/ubuntu/anaconda3/lib/python3.5/site-packages/wheel/bdist_wheel.py", line 215, in run
      self.run_command('install')
    File "/home/ubuntu/anaconda3/lib/python3.5/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py", line 974, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-9t06jm4_/uwsgi/setup.py", line 77, in run
      conf = uc.uConf(get_profile())
    File "/tmp/pip-build-9t06jm4_/uwsgi/uwsgiconfig.py", line 742, in __init__
      raise Exception("you need a C compiler to build uWSGI")
  Exception: you need a C compiler to build uWSGI

  ----------------------------------------
  Failed building wheel for uwsgi
  Running setup.py clean for uwsgi
Failed to build uwsgi
Installing collected packages: uwsgi
  Running setup.py install for uwsgi ... error
    Complete output from command /home/ubuntu/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9t06jm4_/uwsgi/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-oxbyg6gk-record/install-record.txt --single-version-externally-managed --compile:
    /home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'descriptions'
      warnings.warn(msg)
    running install
    using profile: buildconf/default.ini
    detected include path: ['/usr/include', '/usr/local/include']
    Traceback (most recent call last):
      File "/tmp/pip-build-9t06jm4_/uwsgi/uwsgiconfig.py", line 734, in __init__
        gcc_version_components = gcc_version.split('.')
    AttributeError: 'NoneType' object has no attribute 'split'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-9t06jm4_/uwsgi/setup.py", line 126, in <module>
        distclass=uWSGIDistribution,
      File "/home/ubuntu/anaconda3/lib/python3.5/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/home/ubuntu/anaconda3/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-9t06jm4_/uwsgi/setup.py", line 77, in run
        conf = uc.uConf(get_profile())
      File "/tmp/pip-build-9t06jm4_/uwsgi/uwsgiconfig.py", line 742, in __init__
        raise Exception("you need a C compiler to build uWSGI")
    Exception: you need a C compiler to build uWSGI

    ----------------------------------------
Command "/home/ubuntu/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9t06jm4_/uwsgi/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-oxbyg6gk-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-9t06jm4_/uwsgi/

I run command sudo apt-get -y install python-dev,but same error happens.I really cannot understand why these error happens.How should I fix this?Why am I told I need C compiler in uWSGI?How should I fix this?

3

3 Answers

20
votes

Your exception explicitly says what's wrong:

gcc_version_components = gcc_version.split('.')
AttributeError: 'NoneType' object has no attribute 'split'

and

raise Exception("you need a C compiler to build uWSGI")
Exception: you need a C compiler to build uWSGI

So in general your system does not have c compiler installed (e.g. gcc). Try installing it. In Ubuntu it would be sudo apt-get install gcc.

BTW. I think this question would better fit askubuntu page.

3
votes

This is because there is no C compiler on the server. If you are using an instance on cloud like AWS or Digital Ocean gcc is typically not installed. So you need to install it manually

sudo apt update
sudo apt install gcc 
sudo pip install uwsgi # Sudo as the server requires root access

should solve the prolem

2
votes

Most linux package managers offer most things precompiled. For example on Ubuntu:

sudo apt install uwsgi-plugin-python3

This will make uwsgi globally available, not just within that one virtualenv, and is an alternative to installing a C compiler.