在virtualenv中安装uwsgi时出错

时间:2017-05-18 02:31:07

标签: python linux flask uwsgi

我正在尝试在Linux ubuntu,python 3.5.2上的虚拟环境中安装uswgi 我做了

pip install uwsgi

我收到了这个错误

Failed building wheel for uwsgi

并在安装日志结束时

    *** uWSGI compiling embedded plugins ***
[thread 0][x86_64-linux-gnu-gcc -pthread] plugins/python/python_plugin.o
[thread 1][x86_64-linux-gnu-gcc -pthread] plugins/python/pyutils.o
In file included from plugins/python/python_plugin.c:1:0:
plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory
compilation terminated.
In file included from plugins/python/pyutils.c:1:0:
plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory
compilation terminated.

----------------------------------------

Command "/home/ubuntu/envflask/env/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-wthov1ur/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-quiupta5-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ubuntu/envflask/env/include/site/python3.5/uwsgi" failed with error code 1 in /tmp/pip-build-wthov1ur/uwsgi/
  • Linux 4.4.0-66-generic x86_64
  • Python 3.5.2

这是解决方案吗?感谢

11 个答案:

答案 0 :(得分:23)

您需要安装Python3.5开发文件,因此请运行以下命令:

apt-get install python3.5-dev

上面的命令将安装Python 3标头以从源代码构建uWSGI。

答案 1 :(得分:15)

apt-get install build-essential python3-dev

来自uWSGI documentation

  uWSGI是一个(大)C应用程序,因此您需要一个C编译器(如gcc或clang)和Python开发头文件。   在基于Debian的发行版上   apt-get install build-essential python-dev就足够了。

对于Python3,只需将其更改为python3-dev

$ python3 --version Python 3.5.2 $ pip3 freeze uWSGI==2.0.15

答案 2 :(得分:4)

Debian的软件包取决于所有受支持的Python 3开发软件包:

apt-get install python3-all-dev

答案 3 :(得分:4)

对于任何使用python 3.6面临相同问题的人,这里是解决它的步骤:

从此ppa获取python 3.6开发工具:

sudo add-apt-repository ppa:deadsnakes/ppa

然后使用:

更新您的包裹清单
sudo apt-get update

然后安装3.6版本的开发工具

apt-get install build-essential python3.6-dev

使用激活您的虚拟环境,然后安装uwsgi:

pip install uwsgi

答案 4 :(得分:3)

如果在python3.6下安装uwsgi时遇到相同的问题 只是

apt-get install python3.6-dev

在我的情况下,uwsgi是通过buildout安装的

注意:也许您应该添加有效的ppa

答案 5 :(得分:2)

我也遇到过同样的问题。我可以通过以下方法解决它:

sudo apt install libpython3.7-dev

如果您的python版本是3.6,请使用3.6而不是3.7。 之后,使用pip安装uwsgi:

sudo pip install uwsgi

答案 6 :(得分:1)

您必须安装 python3-devel 软件包:

$ sudo dnf install python3-devel -y

然后安装uwsgi模块:

$ pip install uwsgi

答案 7 :(得分:0)

对于openSUSE(风滚草),

  1. 我停用并删除了自己的venv
  2. 通过yast2安装了python3-devel
  3. 然后重新创建并激活我的venv
  4. pip install uwsgi

答案 8 :(得分:0)

如果要安装uwsgi命令,请通过

curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

将mv / tmp / uwsgi更改为/ usr / local

答案 9 :(得分:0)

或者,您可以使用conda安装uwsgi,但请确保使用conda-forge频道:

conda install -c conda-forge uwsgi

答案 10 :(得分:0)

在安装uwsgi时我遇到了类似的问题

 ibpython3.7m.a’ generated with LTO version 6.0 instead of the expected 8.1. 

默认的Python是3.7,我必须使用pip3.8来解决此问题。 但是我还有另一个问题。正在运行

sudo uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app

产生以下错误:

uwsgi: invalid option -- 'w'
getopt_long() error

我尝试了很多事情,包括modular installation 主要问题是默认的uwsgi文件夹是/ usr / bin / uwsgi,但是当我使用pip3.8安装时,它没有设置为默认值。我无法解决此问题,因此切换到fastapi and uvicorn。 我仍然很想找到解决问题的方法。