user8817674
user8817674

Reputation: 1151

Failed building wheel for uwsgi

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?

Upvotes: 38

Views: 53978

Answers (5)

Rufat
Rufat

Reputation: 702

CentOS 7, python 3.11:

pip install uwsgi==2.0.23

The later version causes an error:

Building wheels for collected packages: uwsgi
  Building wheel for uwsgi (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for uwsgi (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [22 lines of output]
      /tmp/pip-build-env-7vhdlmeh/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py:265: UserWarning: Unknown distribution option: 'descriptions'
        warnings.warn(msg)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib
      copying uwsgidecorators.py -> build/lib
      installing to build/bdist.linux-x86_64/wheel
      running install
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      gcc: error: unrecognized command line option ‘-Wformat-signedness’
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for uwsgi
Failed to build uwsgi
ERROR: Could not build wheels for uwsgi, which is required to install pyproject.toml-based projects

-Wformat-signedness is introduced in gcc 5, CentOS only has gcc 4.

Upvotes: 4

Makan dianka
Makan dianka

Reputation: 131

This command worked for me sudo apt install build-essential python3-dev

Upvotes: 7

Trect
Trect

Reputation: 2965

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

Upvotes: 3

John Mee
John Mee

Reputation: 52323

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.

Upvotes: 7

running.t
running.t

Reputation: 5709

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.

Upvotes: 44

Related Questions