2012-02-19 10 views
7

Sto cercando di lavorare su pinax WebFaction e avere così tanti problemi ...Impossibile importare le impostazioni di 'myproject.settings' (è lo sys.path?): No module named pinax

[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] mod_wsgi (pid=22796): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'. 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self.load_middleware() 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 39, in load_middleware 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  for middleware_path in settings.MIDDLEWARE_CLASSES: 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/utils/functional.py", line 276, in __getattr__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self._setup() 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 42, in _setup 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self._wrapped = Settings(settings_module) 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 89, in __init__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] ImportError: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named pinax 

il WSGI:

import os 
import sys 

from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
application = WSGIHandler() 

il WSGI è nella stessa cartella myproject e settings.py è sicuramente in myproject. Quindi cosa dà?

EDIT:

Va bene così ho preso il consiglio da qui così come dalla Webfaction e la WSGI ora assomiglia a questo ...

import os 
import sys 
from site import addsitedir 
from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
sys.path.append('/home/pawesome/webapps/qtsocial/myproject') 
sys.path.append('/home/pawesome/webapps/qtsocial') 

addsitedir('/home/pawesome/envs/pinax072/lib/python2.6/site-packages') 
application = WSGIHandler() 

Penso che questo ha risolto qualcosa, ma non tutto. .. ora io sono sempre ...

[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] mod_wsgi (pid=15572): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'. 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__ 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]  self.load_middleware() 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 47, in load_middleware 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]  raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error importing middleware django_openid.consumer: "No module named voting_extras" 

Grazie ancora ragazzi ... La gente a WebFaction hanno recentemente rinunciato e mi ha detto di venire qui anche se ho già avuto lol

risposta

2

c'erano 2 problemi,

  1. Il virtualenv deve essere caricato in ~/apache2/bin/start con queste righe,

    WORKON_HOME=/home/pawesome/envs/pinax072/ . $WORKON_HOME/bin/activate

  2. si dovrebbe utilizzare il file wsgi fornito da pinax e non quello fornito dal nostro programma di installazione in quanto Pinax ha un codice percorso personalizzato necessario,

    #WSGIScriptAlias//home/pawesome/webapps/qtsocial/myproject.wsgi WSGIScriptAlias//home/pawesome/webapps/qtsocial/myproject/deploy/pinax.wsgi

9

Hai provato ad aggiungere tale cartella al tuo PYTHONPATH in modo esplicito? Inoltre, potrebbe essere necessario aggiungere sia la cartella del progetto e quella principale. Aggiungi queste righe al tuo file wsgi, utilizzando il percorso del tuo progetto:

sys.path.append('/explicit/path/to/myproject') 
sys.path.append('/explicit/path/to') 

P.S. fallo prima della linea application = WSGIHandler().

Aggiornamento: il nuovo errore sembra avere la stessa causa, secondo this. Controlla attentamente dove si trova l'app "voting_extras" e se la cartella principale è presente o meno in PYTHONPATH.

+0

Va bene così ho preso il consiglio da qui così come dalla Webfaction e la WSGI ora assomiglia a questo ... import os import sys dal sito di importazione addsitedir da django.core.handlers.wsgi importazione WSGIHandler os.environ ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' sys.path.append ('/ home/pawesome/webapps/qtsocial/myproject') sys.path.append ('/ home/pawesome/webapps/qtsocial ') addeditedir ('/home/pawesome/envs/pinax072/lib/python2.6/site-packages ') application = WSGIHandler() – milktrey

+0

@milktrey ha aggiornato la risposta in base ad alcune informazioni di webfaction, spero che aiuti ... – mgibsonbr

8

Penso che sia necessario aggiungere le tue cose al PYTHONPATH. Aggiungo il mio progetto ed è virtualenv. Ecco un esempio di come potrebbe essere il tuo wsgi per progetto.

import sys 
import site 
import os 

envpath = '/development/myproject/env/lib/python2.7/site-packages' 

# we add currently directory to path and change to it 
pwd = os.path.dirname(os.path.abspath(__file__)) 
os.chdir(pwd) 
sys.path = [pwd] + sys.path 

# Append paths 
site.addsitedir(envpath) 

# now start django 
from django.core.handlers.wsgi import WSGIHandler 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
application = WSGIHandler() 
0

Secondo questa https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/#using-a-virtualenv basta aggiungere percorso del pacchetto del sito e la directory site-packages pitone in Apache config o la vostra configurazione sito (fuori da direttiva VirtualHost)

WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages

Per me, è stato:

WSGIPythonPath /var/www/djtest:/usr/local/lib/python2.7/site-packages

14

nel vostro terminale, cd nella directory che contiene settings.py, quindi eseguire

python settings.py 

È possibile ottenere un errore di importazione che può essere facilmente risolto (errore di battitura, o errore di sintassi).

-1

con PyCharm. Ho chiuso "Aggiungi root di contenuti a PYTHONATH" e "Aggiungi root di origine a PYTHONATH". Funziona.

0

Ho incontrato un problema simile. Nel mio caso avevo una cartella di configurazione di primo livello, dove si trovava il file generale settings.py. Nella cartella myproject ho avuto una seconda impostazione in cui si tenta di importare il file config.settings.

Nel mio caso il problema era che era alla ricerca di pitone nel myproject.config cartella anziché livello superiore config.

# project structure 
    config/ 
     settings.py 
     constans.py 
    myproject/ 
     config/ 
      constants.py 
     settings.py 
     manage.py 
     urls.py 

err: ImportError: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named settings

Soluzione: ho rimosso/spostato nella cartella mioprogetto/config.