【问题标题】:Error installing uwsgi in virtualenv在 virtualenv 中安装 uwsgi 时出错
【发布时间】:2017-10-17 16:05:57
【问题描述】:

我正在尝试在 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

这有什么解决办法吗?谢谢

【问题讨论】:

  • 将 python 升级到 3.9.7 为我解决了这个问题。

标签: python linux flask uwsgi


【解决方案1】:

你需要安装Python3.5开发文件,所以运行这个命令:

apt-get install python3.5-dev

上述命令将安装 Python 3 头文件以从源代码构建 uWSGI。

【讨论】:

  • 这行得通!谢谢!!现在我在我的虚拟环境中安装了 uWSGI。但我不能用 python 3 运行它。我用sudo uwsgi --http :80 --wsgi-file main.py --callable app --master --processes 8 --threads 2 运行,我看到这条线Python version: 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]
  • 因为sudo表示以其他用户(默认root)运行某些命令,所以可以看到this question
  • 但是如果我不像sudo那样运行,我不能使用80端口运行它
  • @AlvaroB,只需在 virtualenv 中安装正确的 python 版本。 $ virtualenv -p python3.6 .venv 然后 $ . .venv/bin/activate 和 ' $ python --version ' 必须是 3.6.x
  • 谢谢!你节省了我的时间!我在使用 python3.7.9 时安装了 python3.7-dev。
【解决方案2】:

apt-get install build-essential python3-dev

来自uWSGIdocumentation

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

【讨论】:

    【解决方案3】:

    对于遇到相同问题的 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】:

      Debian 有依赖于所有支持的 Python 3 开发包的包:

      apt-get install python3-all-dev
      

      【讨论】:

        【解决方案5】:

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

        sudo apt install libpython3.7-dev

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

        sudo pip install uwsgi
        

        【讨论】:

          【解决方案6】:

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

          apt-get install python3.6-dev
          

          在我的例子中,uwsgi 是通过 buildout 安装的

          注意:您可能应该添加有效的 ppa

          【讨论】:

            【解决方案7】:

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

            conda install -c conda-forge uwsgi
            

            【讨论】:

              【解决方案8】:

              你必须安装python3-devel包:

              $ sudo dnf install python3-devel -y
              

              然后安装uwsgi模块:

              $ pip install uwsgi
              

              【讨论】:

                【解决方案9】:

                对于 openSUSE(风滚草),

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

                【讨论】:

                  【解决方案10】:

                  如果要安装uwsgi命令,通过

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

                  mv /tmp/uwsgi 到 /usr/local 什么

                  【讨论】:

                    【解决方案11】:

                    我在安装 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。 我仍然有兴趣找到解决问题的方法。

                    【讨论】:

                    • 试试这个,sudo uwsgi --socket 0.0.0.0:5000 --protocol=http --plugin python3 --module wsgi:app
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-05-08
                    • 2013-11-30
                    • 2020-10-09
                    相关资源
                    最近更新 更多