pip-installed uWSGI ./python_plugin.so error
I've installed uWSGI using pip and start it up with an XML to load my application. The XML config contains
<plugin>python</plugin>. On my new server it leads to an error:
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 !!!
I can find the
.c and the
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'
But no .so found. My previous system had a uwsgi install through apt-get, but that's really old (and I'm quite sure it uses the pip installed uwsgi normally, but maybe not for shared objects then?)
Some background info:
- Ubuntu 12.0.4 LTS
- Python 2.7 (virtualenv)
- I've installed uWSGI in my venv, using the normal
pip install uwsgi(no
So I'm a tad clueless :( I can't be the only person in the world to have this, right? Should I compile the
.so objects myself? (If so, how?) Or is there another great solution?
Distros should package uWSGI in a modular way, with each feature as a plugin. But when you install using language specific ways (pip, gem...) the relevant language is embedded, so you do not need to load the plugin
Linking error when installing uwsgi with pip in virtualenv � Issue , Linking error when installing uwsgi with pip in virtualenv #1516 lib64/libcrypt. so, not found (try using -rpath or -rpath-link) embedded plugins *** plugins/ python/python_plugin.o is up to date plugins/python/pyutils.o is up to� The command I'm running is uwsgi --master --emperor /etc/uwsgi/apps-enabled --die-on-term --uid www-data --gid www-data. It appears that I'm missing the http and python plugins: [uWSGI] getting INI configuration from component_tracking_test.ini open("./http_plugin.so"): No such file or directory [core/utils.c line 3347] !!!
For anyone that is having trouble with this, basically you need to remove lines that state your plugin from your configuration files if you change from a distro package to a pypi or gem install. I was previously using the Ubuntu/Debian package for uwsgi, but it was old so I upgraded to use pip instead.
So, in my configuration .ini file, I had the following line:
plugin = python
Removing that line fixes the problem.
!! UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open , How do I resolve this error? I am on ubuntu 14.04 using python 2x here is how I install: UWSGI_EMBED_PLUGINS=msgpack pip install uwsgi==126.96.36.199 If you have installed your uwsgi with pip or make (or otherwise made a custom build), your python plugin would be built into the binary and thus not created as a shared library (.so file). Removing the <plugin>python</plugin> line should solve the problem in this case, as it's not necessary, but breaks the setup.
Maybe you forgot this command
$ apt-get install uwsgi-plugin-python
uwsgi can't find python plugin, If you have installed your uwsgi with pip or make (or otherwise made a built into the binary and thus not created as a shared library (.so file). Removing the < plugin>python</plugin> line should solve the problem in this case,� This is the approach your distribution should follow, and this is the approach you MUST follow if you want to build a commercial service over uWSGI (see below). The vast majority of uWSGI features are available as plugins. Plugins can be loaded using the –plugin option.
Install all available plugins:
sudo apt-get install uwsgi-plugins-all
Installing uWSGI — uWSGI 2.0 documentation, python uwsgiconfig.py --build. You can also use pip to install uWSGI (it will build a binary with python support). # Install the latest stable release: pip install uwsgi� I am looking on tweaking uwsgi params but anything I try it does not change. Since I have an old version of uwsgi 0.9.8.1 I am thinking on installing something newer? Should I do it with pip install? Is this behaviour something known with a known workaround? Of the most important uwsgi params I am using: processes=8. master=True. cpu-affinity=1
As of 6/2018 the
yum package name was updated from
The new install command is therefore
yum install uwsgi-plugin-python2
pip-installed uWSGI ./python_plugin.so error, Las distribuciones deben empaquetar uWSGI de forma modular, con cada caracter�stica como un complemento. Pero cuando se instala usando formas� Our application is using v2.17.1. Getting segfaults following slow memory creep: Fri Nov 16 09:58:20 2018 - !!! uWSGI process 8059 got Segmentation Fault !!!
1 How to use uWSGI with python3.6 in Ubuntu 2 Upgrading PostgreSQL from 9.5 to 9.6 on Ubuntu 17.04 4 more parts 3 How to use uWSGI Avahi plugin in Ubuntu 4 Upgrading PostgreSQL from 9.6 to 10.0 on Ubuntu 18.04 5 Upgrading PostgreSQL from version 10 to 11 on Ubuntu 19.04 (Disco Dingo) 6 Upgrading PostgreSQL from version 11 to 12 on Ubuntu 20.04 (Focal Fossa)
Bonus: multiple Python versions for the same uWSGI binary¶ As we have seen, uWSGI is composed of a small core and various plugins. Plugins can be embedded in the binary or loaded dynamically. When you build uWSGI for Python, a series of plugins plus the Python one are embedded in the final binary.
If your distribution already has pip installed, you might need to update it if it’s outdated. If it’s outdated, you’ll know because installation won’t work. Take a look at venv. This tool provides isolated Python environments, which are more practical than installing packages systemwide.
- So... I removed the <plugin>python</plugin> from the xml file and now it loads... but I do not understand why/when it is needed. Still have to check also whether it really works now
- Thanks! The internet guides got me a tad confused there, but in the end it was more easy than expected then! ;) Thanks for your help
- This is the most relevant comment on uwsgi installation out there. Thank you. Here's a useful link to future readers: projects.unbit.it/uwsgi/wiki/MultiPython
- A small fyi for people who use the xml instead of the .ini, remove "<plugin>python</plugin>"
- Or if you're using python3
apt-get install uwsgi-plugin-python3
- and under centos rhel -
sudo yum install uwsgi-plugin-python
- DO NOT DO THIS if you pip installed uwsgi and/or are running virtualenv. The two versions do not play well together. Use @Jordan answer.
- Confirmed Oct 2019, virtualenv installs at python 3.7, the plugin comes in at python 3.6. Results in No module named 'encodings'.