(Other posts on SO are similar, but none have the specific combination of uwsgi + Flask + virtualenv) (This one is closest)
I installed uwsgi via apt-get. I also tried
In my case the problem was the python version uWSGI tried to use.
My project was written in python 3.4, but I was not specifying this in uWSGI config. So uWSGI tried to use python 2 and tried to import modules from the folder lib/python2.7 inside the virtualenv.
So I received the 'No module named site' error, because all the modules, including the site module, where inside lib/python3.4, not lib/python2.7.
To solve it, i had to do two things:
Install the python3 plugin for uWSGI, with:
apt-get install uwsgi-plugin-python3
Use it in the .ini config file, with:
plugins = python34
Hope this helps someone with the same problem in the future.
As requested, here follows my .ini file:
[uwsgi]
base = /your/app/path
pythonpath = %(base)
module = your_module_name
callable = app #Here you put the name of the variable which holds your app inside your module
home = /your/virtualenv/path
plugins = python34
master = true
processes = 2
uid = www-data
gid = www-data
socket = /path/to/socket
chmod-socket = 660
die-on-term = true
logto = /var/log/uwsgi/%n.log