uWSGI + virtualenv 'No module named site'

前端 未结 3 1179
一个人的身影
一个人的身影 2021-02-13 12:04

So this seems to be a really common problem with this setup, but I can\'t find any solutions that work on SO. I\'ve setup a very new Ubuntu 15.04 server, then installed nginx, v

相关标签:
3条回答
  • 2021-02-13 12:27

    As @Freek said, site refers to a python module.

    The error claims that python cannot find that package, which is because you have specified python_home to the wrong location.

    I've encountered with the same problem and my uwsgi.ini is like below:

    [uwsgi]
    # variable
    base = /home/xx/
    # project settings
    chdir = %(base)/
    module = botservice.uwsgi:application
    home = %(base)/env/bin
    

    For this configuration uwsgi can find python executable in /env/bin but no packages could be found under this folder. So I changed home to

    home = %(base)/env/
    

    and it worked for me.

    In your case, I suggest digging into home directive and point it to a location which contains both python executable and packages.

    0 讨论(0)
  • 2021-02-13 12:38

    The site module is in the root of django.

    First check is to activate the virtualenv manually (source /root/Env/example/bin/activate, start python and import site). If that fails, pip install django.

    Assuming that django is correctly installed in the virtualenv, make sure that uWSGI activates the virtualenv. Relevant uWSGI configuration directives:

    plugins = python
    virtualenv = /root/Env/example
    

    and in case you have error importing example.wsgi:

    pythonpath = /srv/www/example/app/example
    
    0 讨论(0)
  • 2021-02-13 12:45

    In my case, I was seeing this issue because the django app I was trying to run was written in python 3 whereas uwsgi was configured for python 2. I fixed the problem by:

    1. recompiling uwsgi to support both python 2 and python 3 apps (I followed this guide)
    2. adding this to my mydjangoproject_uwsgi.ini:
    plugins         = python35 # or whatever you specified while compiling uwsgi 
    

    For other folks using Django, you should also make sure you are correctly specifying the following:

    # Django dir that contains manage.py
    chdir           = /var/www/project/myprojectname
    # Django wsgi (myprojectname is the name of your top-level project)
    module          = myprojectname.wsgi:application
    # the virtualenv you are using (full path)
    home            = /home/ubuntu/Env/mydjangovenv
    plugins         = python35
    
    0 讨论(0)
提交回复
热议问题