我收到错误,为uwsgi构建轮子失败。
我的环境是Ubuntu,现在我想安装uwsgi,所以我运行命令pip install uwsgi
。但是发生了错误
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/
我运行命令sudo apt-get -y install python-dev,但是发生了同样的错误。我真的无法理解为什么会发生这些错误。我该如何解决这个问题?为什么我告诉我需要在uWSGI中使用C编译器?应该怎么做?我解决了这个问题?
答案 0 :(得分:4)
您的例外明确说明了什么错误:
gcc_version_components = gcc_version.split('.')
AttributeError: 'NoneType' object has no attribute 'split'
和
raise Exception("you need a C compiler to build uWSGI")
Exception: you need a C compiler to build uWSGI
所以一般来说你的系统没有安装c编译器(例如gcc)。尝试安装它。在Ubuntu中它将是sudo apt-get install gcc
。
顺便说一句。我认为这个问题最适合askubuntu页。
答案 1 :(得分:0)
大多数linux软件包管理器提供大多数预编译的东西。例如在Ubuntu上:
sudo apt install uwsgi-plugin-python3
这将使uwsgi
全局可用,而不仅仅是在那个virtualenv中可用,并且是安装C编译器的替代方法。
答案 2 :(得分:0)
这是因为服务器上没有C编译器。如果您正在使用AWS或Digital Ocean等云上的实例,则通常不会安装gcc
。所以您需要手动安装
sudo apt update
sudo apt install gcc
sudo pip install uwsgi # Sudo as the server requires root access
应该解决问题