ImportError: nessun modulo denominato django.core.wsgi Apache + VirtualEnv + AWS + WSGI

Sto cercando di pubblicare il mio sito su un’istanza EC2 di Amazon e continuo a ricevere un errore di 500. Davvero non so perché.

//Log files

[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/apache/wsgi.py' cannot be loaded as Python module. [Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/apache/wsgi.py'. [Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last): [Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/apache/wsgi.py", line 26, in  [Sun Feb 17 23:12:48.066920 2013] from django.core.wsgi import get_wsgi_application [Sun Feb 17 23:12:48.066945 2013] ImportError: No module named django.core.wsgi 

// File di configurazione di Apache

  WSGIScriptAlias / /srv/www/app/mysite/apache/wsgi.py WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages WSGIProcessGroup mysite   Order deny,allow Allow from all    Order deny,allow Allow from all   Order deny,allow Allow from all   Order deny,allow Allow from all  

//wsgi.py

  import os import sys import site site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() path = '/srv/www/app/mysite' if path not in sys.path: sys.path.append(path) 

    So che questo è un thread vecchio, ma mi sono appena imbattuto nello stesso problema e non penso che questo sia causato da un pacchetto mancante. Poiché la distribuzione core di Django contiene già il gestore wsgi corretto.

    Il problema qui è che quando wsgi.py viene eseguito, mancano i pacchetti dei pacchetti del sito dal tuo virtualenv. (Se hai triggersto il tuo virtualenv, e hai fatto installare django, allora tutto va bene, hai i pacchetti django necessari).

    Per quanto mi riguarda, ho risolto il problema modificando sys.path nel mio file Path / to / Project / Project / wsgi.py.

    Devi aggiungere la directory del progetto e i pacchetti del tuo sito virtualenv all’elenco sys.path. Ecco il mio file wsgi.py contenuto nel mio progetto (Parlando del file wsgi.py creato con django-admin.py start-project) … che ho dovuto modificare per farlo funzionare con Apache

     # ===================== # wsgi.py file begin import os, sys # add the hellodjango project path into the sys.path sys.path.append('/hellodjango') # add the virtualenv site-packages path to the sys.path sys.path.append('/Lib/site-packages') # poiting to the project settings os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() # wsgi.py file end # =================== 

    Assicurarsi:

    1. hai aggiunto mod_wsgi alla directory dei moduli di Apache mod_wsgi deve essere compilato per la versione del sistema operativo, Apache e Python che hai

    2. aggiunto il comando del modulo di carico nel tuo httpd.conf per caricare il modulo mod_wsgi LoadModule wsgi_module modules / mod_wsgi.so

    3. configurato specifiche di Django nel tuo httpd.conf o in qualsiasi conf che includi nel tuo httpd.conf

    Basato sulla documentazione Come usare Django con Apache e mod_wsgi

     WSGIScriptAlias / /hellodjango/hellodjango/wsgi.py WSGIPythonPath :/Lib/site-packages /hellodjango/hellodjango>  Order deny,allow Require all granted   

    Spero che questo ti aiuti. Ha funzionato per me.

    Aggiungi questo al file di configurazione di Apache:

     WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main 

    Per me, questo ha indicato che Django non è stato installato sul sever. Risolto tramite

     pip install Django 

    Ho avuto un errore simile proprio ora. Si scopre che il nostro codice Django è stato sviluppato su python 3.5, ma per alcune ragioni le persone che hanno implementato il nostro server virtualEnv con python 2.7. Abbiamo reimpiegato con python 3.5 e tutto ha funzionato per noi

    Di seguito è stato visualizzato il messaggio di errore che ho ricevuto:

     $ python serviceStartup.py Traceback (most recent call last): File "serviceStartup.py", line 10, in  from django.core.wsgi import get_wsgi_application ImportError: No module named django.core.wsgi 

    Spero che questo possa aiutare chiunque veda un messaggio di errore simile!

    Hai configurato tutto molto bene, amico mio, devi solo dare il permesso all’utente apache di accedere sia alle directory di progetto che a quelle virtuali.

    Esempio:

     sudo chown -R www-data:www-data /home/ubuntu/projects sudo chown -R www-data:www-data /home/ubuntu/virtualenv 

    Questo ha risolto il mio problema con ImportError: No module named django.core.wsgi (cartelle virtualenvs) e ImportError: No module named .settings (cartelle dei progetti)

    A prima vista, mi dispiace per il mio inglese. Ho anche affrontato questo problema, e l’ho risolto cambiando il file “wsgi.py” in:

     importazione os
     importare Django
     da django.core.handlers.wsgi import WSGIHandler
    
    
     os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "eisentask.settings.production")
     django.setup (set_prefix = False)
    
     applicazione = WSGIHandler ()
    

    Per me erano necessarie alcune variabili (per Windows):

     set PYTHONHOME=F:\path\to\python set PYTHONPATH=F:\path\to\python 

    Assicurati di utilizzare il modulo uwsgi installato all’interno di virtualenv, ad esempio:

     /home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi