pip-installed uWSGI ./python_plugin.so错误

Car*_*rst 30 python uwsgi

我已经使用pip安装了uWSGI并使用XML启动它来加载我的应用程序.XML配置包含<plugin>python</plugin>.在我的新服务器上,它会导致错误:

open("./python_plugin.so"): No such file or directory [core/utils.c line 3321]
!!! UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or directory !!!
Run Code Online (Sandbox Code Playgroud)

我可以找到.c.o版本:

sudo find / -name 'python_plugin.c'
/srv/www/li/venv/build/uwsgi/build/uwsgi/plugins/python/python_plugin.c
/srv/www/li/venv/build/uwsgi/plugins/python/python_plugin.c
sudo find / -name 'python_plugin.o'
/srv/www/li/venv/build/uwsgi/build/uwsgi/plugins/python/python_plugin.o
/srv/www/li/venv/build/uwsgi/plugins/python/python_plugin.o
sudo find / -name 'python_plugin.so'
Run Code Online (Sandbox Code Playgroud)

但没有发现.我之前的系统通过apt-get进行了uwsgi安装,但这确实很旧(而且我很确定它通常使用pip安装的uwsgi,但是对于共享对象可能不行吗?)

一些背景信息:

  • Ubuntu 12.0.4 LTS
  • Python 2.7(virtualenv)
  • 我已经在我的venv中安装了uWSGI,正常使用pip install uwsgi(没有sudo)

所以我有点无能为力:(我不能成为世界上唯一拥有此权利的人,对吧?我应该自己编译.so对象吗?(如果是这样,怎么样?)或者还有另一个很好的解决方案吗?

rob*_*rto 49

发行版应以模块化方式打包uWSGI,每个功能都作为插件.但是,当您使用特定于语言的方式(pip,gem ...)进行安装时,会嵌入相关语言,因此您无需加载插件


Jor*_*dan 47

对于遇到此问题的任何人,如果您从发行版包更改为pypi或gem安装,基本上您需要从配置文件中删除说明插件的行.我以前使用Ubuntu/Debian软件包用于uwsgi,但它已经过时了,所以我升级为使用pip代替.

所以,在我的配置.ini文件中,我有以下行:

plugin = python
Run Code Online (Sandbox Code Playgroud)

删除该行可以解决问题.

  • 对于使用xml而不是.ini的人来说,小fyi,删除"<plugin> python </ plugin>" (5认同)

小智 9

也许你忘记了这个命令

$ apt-get install uwsgi-plugin-python
Run Code Online (Sandbox Code Playgroud)

  • 或者如果你使用的是python3`apt-get install uwsgi-plugin-python3` (5认同)