我已经使用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 !!!
我可以找到.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'
但是没有发现。我之前的系统通过apt-get进行了uwsgi安装,但这确实很旧(我很确定它通常使用pip安装的uwsgi,但是对于共享对象可能不行吗?)
一些背景信息:
pip install uwsgi
(无sudo
)所以我有点无能为力:(我不能成为世界上唯一拥有此权限的人,对吗?我应该自己编译.so
个对象吗?(如果是这样,怎么做?)或者是还有另一个很好的解决方案吗?
答案 0 :(得分:47)
Distros应该以模块化方式打包uWSGI,每个功能都作为插件。但是,当您使用特定于语言的方式(pip,gem ...)进行安装时,会嵌入相关语言,因此您无需加载插件
答案 1 :(得分:45)
对于遇到此问题的任何人,如果您从发行版包更改为pypi或gem安装,基本上您需要从配置文件中删除说明插件的行。我之前使用Ubuntu / Debian软件包用于uwsgi,但它已经过时了,所以我升级为使用pip。
因此,在我的配置.ini文件中,我有以下行:
plugin = python
删除该行可以解决问题。
答案 2 :(得分:7)
也许你忘记了这个命令
$ apt-get install uwsgi-plugin-python
答案 3 :(得分:0)
安装所有可用的插件:sudo apt-get install uwsgi-plugins-all
答案 4 :(得分:0)
截至6/2018,yum
软件包名称已从uwsgi-plugin-python
更新为uwsgi-plugin-python2
https://src.fedoraproject.org/rpms/uwsgi/pull-request/4#
新的安装命令因此为yum install uwsgi-plugin-python2